提问者:小点点

在没有通知的情况下关闭应用程序


我目前正在管理一个复杂的应用程序。 它是用C#和.NET4.7.2编写的。

有时这个程序会在没有通知的情况下关闭。 即使使用try/catch块和Main方法中的MessageBox.show(),也不会出现错误消息(我知道这可能不是最好的方法,但应该可以工作)。

有几个线程在不同点运行,调用外部DLL,有时甚至调用驱动程序。 所以为了记录是否是另一个线程使整个事情崩溃,我在开始时这样做:

AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
Application.ThreadException += Application_ThreadException;

因为我不确定哪个是正确的。 在这些方法中,我将异常(在执行空检查之后)记录到一个文件中(使用file.appendtext和一个基于时间戳的文件)。

还是一无所获。 在一些随机的时间(2到6个小时)之后,应用程序不断崩溃,我没有日志信息,没有错误消息,我在这里有点迷路了。

该应用程序在发布模式下运行,我无法使用Visual Studio在其中运行调试器(因为这样会使它变得容易)。 也许还有另一种方法可以运行外部调试器?

有人能给我一个提示,如何赶上一个会导致应用程序静默崩溃的异常吗?


共1个答案

匿名用户

根据您的解释,我想到的唯一一件事是,您的应用程序中有一些激发和忘记线程,这些线程有时会抛出异常,但您的应用程序无法跟踪它们以记录或捕获它们的异常。

确保所有任务都正确等待,并且没有任何异步void方法。

如果你真的需要一些fire and forgettaskaliver操作在你的应用程序中,至少可以在你的类中使用一些private Task fireandforgettaskaliver来保持它们的活力。

另一个可能是应用程序中的内存泄漏,导致堆栈溢出异常。