C# 应用程序意外终止

标签 c# .net

我们运行一个 C# 控制台应用程序,该应用程序启动多个线程来完成工作。主要功能看起来像这样:

try
{
    DoWork();
}
catch (Exception err)
{
    Logging.Log("Exception " + err.ToString());
}
Logging.Log("Finished");

DoWork() 函数从数据库中读取新作业,并生成线程来处理每个工作项。从上周开始,该应用程序开始神秘消失。它从进程列表中消失并且事件日志中没有条目。日志文件显示特定点之前的工作:它不记录异常或“完成”行。

关于 C# 应用程序如何像那样消失的任何线索?

编辑:线程的创建方式如下:

new Thread(SomeObj.StartFunc).Start();

一些消失发生在没有线程运行时。

附言我们在安装 DebugDiag 时设置了一条规则,以便在我们的程序崩溃时创建故障转储。当进程消失时,它没有创建任何转储文件。

最佳答案

您需要在每个线程工作的函数的顶层有一个类似的 catch block 。如果线程上存在未捕获的异常,它将终止应用程序,而主线程上的 catch block 将无济于事。

关于C# 应用程序意外终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1278126/

相关文章:

c# - DateTime 从当前文化中获取代表日、月、年的字母

c# - 具有固定类型参数的抽象工厂方法

c# - 向 Entity Framework 中的表添加虚拟列?

c# - 困惑: instance creation of c# class in c++

c# - 捕获多个自定义FaultException类型

c# - 存储分层 Const 数据

c# - 从 Visual Studio 扩展访问当前的 Microsoft 帐户

c# - 将 ref 与列表一起使用以及列表如何保持更新

.net - 执行 F# 脚本

c# - 如何等待用户进程的系统进程?