由于应用程序已经崩溃,我无法做太多事情,因为如果我做太多,执行的代码可能会访问损坏的内存并再次崩溃。我目前无法做的一些事情是关闭网络连接、Oracle数据库会话等。
问题在于,如果应用程序崩溃,而用户正在吃午饭时MessageBox打开,其他用户可能会被阻塞,因为数据库会话仍然处于打开状态。因此,我需要:
要么是带有超时的MessageBox。问题是您无法使用标准MessageBox Win32 API函数完成此操作,我也不想为其制作特定对话框(因为我想尽量减少崩溃后执行的逻辑)。
要么是从另一个线程关闭MessageBox的可能性(另一个线程可以提供超时逻辑)。
我是否忽略了Win32 API中的某些内容,有没有可能拥有带有超时的MessageBox?
或者从另一个线程正确关闭打开的MessageBox的方法是什么(如何获取MessageBox句柄,如何关闭它等)?
DialogBox
创建一个新的对话框, 在WM_INITDIALOG
中创建一个带有SetTimer
的计时器,并在WM_TIMER
中关闭对话框。 - Oleg