【发布时间】:2010-06-22 08:04:15
【问题描述】:
如果我的应用程序崩溃,我使用 ExceptionFilter 来捕获崩溃,执行一些最终操作,然后向用户显示应用程序已崩溃的消息框。
因为应用程序已经崩溃,我可以(或我不敢)做的事情不多,因为如果我做的太多,执行的代码可能会访问损坏的内存并再次崩溃。 一些我目前不能做(或者我不敢做)的事情是关闭网络连接、Oracle 数据库会话、...
问题是,如果应用程序崩溃,并且用户在 MessageBox 打开时外出吃午饭,其他用户可能会因为打开的数据库会话而被阻止。因此我想要:
- 有超时的 MessageBox。问题是你不能用标准的 MessageBox Win32 API 函数来做到这一点,我不想为它制作一个特定的对话框(因为我想最小化崩溃后执行的逻辑)
- 或者从另一个线程关闭 MessageBox 的可能性(另一个线程可以提供超时逻辑)。
我是否忽略了 Win32 API 中的某些内容,是否有可能让 MessageBox 超时?
或者从另一个线程关闭打开的 MessageBox 的正确方法是什么(如何获取 MessageBox 句柄,如何关闭它,...)?
【问题讨论】: