我们运行一个C#控制台应用程序,该应用程序启动多个线程来完成工作。主要功能看起来是这样的:C#应用程序意外终止
try
{
DoWork();
}
catch (Exception err)
{
Logging.Log("Exception " + err.ToString());
}
Logging.Log("Finished");
的DoWork()
功能从数据库中读取新的就业机会,并生成线程来处理每一个工作项目。自上周以来,该应用程序开始神秘消失。它从进程列表中消失,事件日志中没有条目。日志文件显示工作到某一点:它不会记录异常或“完成”行。
关于C#应用程序如何消失的任何线索?
编辑:线程就像创建:
new Thread(SomeObj.StartFunc).Start();
有些人在没有线程运行出现失踪。
P.S.我们使用规则安装DebugDiag,以便在程序崩溃时创建崩溃转储。它在进程消失时没有创建任何转储文件。
我们真的可以做什么是在DoWork的方法的一些更详细... – 2009-08-14 14:30:40
是什么DoWork的创建和启动线程后怎么办?它会进入一个无限循环,立即退出,试图加入后台线程,或者是什么? – 2009-08-14 14:36:17
它进入无限循环。后台线程更新他们的状态在用锁定语句保护的数组中。当一个线程完成时,它将从数组中删除它自己的条目。 – Andomar 2009-08-14 14:37:52