我有一个崩溃的.NET 2.0应用程序,当应用程序崩溃时,它不会给出异常或任何其他类型的消息.我正在捕获Application.ThreadException事件,并且在崩溃时没有收到任何内容.运行几天后,应用程序消失了!在Windows事件日志中没有消息,没有转储文件或其他....我试图在几台电脑上运行应用程序,但几天后,出现问题.
应用程序通过TCP/IP连接与另一台PC通信,所有数据始终有效,没有断开连接或其他任何情况.有足够的内存,也在崩溃时等.磁盘空间也没问题.没有选项可以升级到.NET 4.0.
此时应用程序在windbg下运行,所以我希望这会给出一些信息..
如果您对此有任何经验,或者有一些有用的提示或工具,请告诉我们!
如果您使用 TCP/IP,那么您很可能会使用线程。如果线程因未处理的异常而终止,这在调用 EndXxxx() 时很常见,那么您的应用程序将终止。如果在计算机上关闭了 Windows 错误报告,这可能是无提示的,这在服务器上并不少见。至少捕获 ObjectDisposedException 以便您可以处理突然断开连接或强行关闭的连接。
是的,为 AppDomain.CurrentDomain.UnhandledException 编写一个事件处理程序,在您的 Main() 方法中订阅它。记录或显示 e.ExceptionObject.ToString() 的值,这样您就可以准确地知道它的死因是什么。