我有一个正在放逐的线程..我想知道谁在杀死我的线程以及为什么。
我突然想到我的线程被操作系统杀死了,但我想确认一下,如果可能的话,我想知道它为什么会杀死它。
至于线程,我可以断言它在死亡前至少有 40 分钟的执行时间,但它在 5 分钟左右突然死亡。
public void RunWorker()
{
Thread worker = new Thread(delegate()
{
try
{
DoSomethingForALongLongTime();
}
catch(Exception e)
{
//Nothing is never logged :(
LogException(e);
throw e;
}
});
worker.IsBackground = true;
worker.SetApartmentState(System.Threading.ApartmentState.STA);
worker.Start();
}
编辑:解决答案
- Try/Catch 可能的异常:
它已实现但什么也没捕获 :( - 主线程消亡:
该线程由网络服务器创建,继续运行 - 工作完成:
工作没有完成,因为它最终影响到数据库,我可以在线程死亡时检查它是否完成。
想到这些,我想到了这个问题,谁在扼杀我的线程??
附言。不是客厅里拿着烛台的戈登夫人 :)