C ++exception处理程序问题

C ++exception处理程序问题,第1张

概述C ++exception处理程序问题

我编写了一个exception处理程序,帮助我们发现我们的软件问题。 我用

SetUnhandledExceptionFilter();

捕捉任何未捕获的exception,并且工作得很好。

然而,我的处理程序popup一个对话框,要求用户详细说明他们在崩溃时正在做的事情。 这是问题出现的地方,因为对话框和崩溃在同一个线程上下文中,对话框继续抽取应用程序的消息。 这导致我一个问题,因为我们的崩溃之一是在WM_TIMER,每分钟熄灭。 正如你可以想象,如果对话框已经在屏幕上超过了一分钟,一个WM_TIMER调度,应用程序重新崩溃。 在这种情况下重新进入exception处理程序是个坏消息。

如果我让windows处理崩溃,windows将显示一个对话框,该对话框似乎正常工作,但会停止传播到应用程序其余部分的消息,因此WM_TIMER不会被重新发布。

字符设备捕获多个(int)ioctl参数

boost :: asioasynchronous处理程序在取消后调用没有错误

以编程方式调用文件types的默认应用程序

使用filter处理程序扩展windowssearch索引,该处理程序使用C#/ .NET自定义文件格式

将数据传递给windows控制台控制处理程序

有谁知道我怎么能达到相同的效果?

谢谢Rich

Nginx的gzipfilter不能与我的自定义处理程序一起工作

为什么我不能处理NMI?

执行默认信号处理器

如何处理在Python中编写的windows服务信号?

C#windows应用程序阻止windowsclosures/注销

当您检测到未处理的异常时,也许可以使用CreateProcess()启动单独的数据收集过程。 这个单独的过程将提示用户输入他们刚刚在做的事情,而主应用程序可以继续崩溃并终止。

或者,如果您不想启动另一个进程,则可以使用单独的消息队列创建另一个线程 ,在屏幕上显示对话框时阻止主线程执行任何 *** 作。 当你的主线程被阻塞时,它将不会有机会处理WM_TIMER消息。

在第二个线程中显示对话框。 我有或多或少相同的问题(但必须显示一个消息框,而不是对话框)。

编写一个使用Win32 CreateEvent函数创建两个事件的类。 一个事件(触发器)用于触发对话框,一个事件(就绪)是用来表示对话被处理。

向类中添加一个“execute”方法,并在第二个线程中启动这个方法

让'execute'方法等待,直到触发器事件被设置,如果它被设置,则显示对话框

处理完对话之后,设置“就绪”事件。

如果您的应用程序在主线程中崩溃,请为该对话框准备一些信息(通过类中的setter)并设置“trigger”事件,然后等待“ready”事件。 触发器事件的设置将激活第二个线程,主线程将被阻塞,直到第二个线程设置“就绪”事件

总结

以上是内存溢出为你收集整理的C ++exception处理程序问题全部内容,希望文章能够帮你解决C ++exception处理程序问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1284192.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存