gpt4 book ai didi

.net - 显示 “you have crashed, we are sorry …”弹出窗口时完全停止应用程序

转载 作者:行者123 更新时间:2023-12-03 16:57:50 25 4
gpt4 key购买 nike

如果我的应用程序崩溃了,我会拦截崩溃(使用SetUnhandledExceptionFilter函数)。在崩溃处理程序中,我创建一个小型转储文件,并通知用户他的应用程序已崩溃。该通知是通过带有标志MB_TASKMODAL的MessageBox完成的,因此将阻止应用程序的其余部分。

不幸的是,这并不妨碍重绘和计时器消息的处理。尤其是计时器消息很烦人,因为它们可能执行各种中间操作(取决于我的应用程序中加载了哪些插件),甚至保存到备份文件中,等等。

有没有一种简单的方法可以防止Windows发送重绘消息和计时器消息(同时显示“您已崩溃”弹出窗口)?

一种替代方法是使用一些全局变量,该变量将在崩溃处理程序中设置,并在我的应用程序中可以执行某些逻辑的每个位置进行检查,但这对我来说似乎是“肮脏的”且不灵活的解决方案。
有没有更简单的方法? (并且仅确保消息框的消息循环仅处理消息框消息,而不处理其他窗口的消息)。

谢谢
帕特里克

最佳答案

只有一种方法可以安全地显示崩溃对话框-在专门为此创建的单独线程上。在崩溃的线程上创建对话框将引起各种副作用(如您所注意到的),因为它将泵送和分发发往该线程Windows的已发布消息和已发送消息。

问题是-从崩溃处理程序中创建对话框是否安全?我可以想到几种可能会出现问题的情况-尤其是在涉及全局加载程序锁的情况下(即,由于dll加载导致对象初始化内部发生崩溃)。

因此,在应用程序启动时创建线程并使其处于待机状态可能是一个好主意。

关于.net - 显示 “you have crashed, we are sorry …”弹出窗口时完全停止应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1920354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com