这不是终止系统进程,而是杀死“我自己”。我有几个并行的线程,由于不同的原因,它们可能会挂起。
当线程花费太长时间时,我已经创建了一个看门狗:
TimerCallback timerDelegate = new TimerCallback(CheckProcessStatus);
System.Threading.Timer watchDogTimer = new Timer(timerDelegate, new ProcessHealth(plog), 1000 * 60, 1000 * 60);
try
{
// lots of code here
} finally
{
watchDogTimer.Dispose();
}
看门狗:
public void CheckProcessStatus(Object timerState) {
ProcessHealth ph = (ProcessHealth)timerState;
System.writeLine(string.Format("process runs for {0} minutes!", ph.WaitingTime);
if (ph.WaitingTime>60) {
// KILL THE PROCESS
}
}
当“这里有很多代码”花费太长时间时,无论线程处于什么状态,我都想终止线程。(在“终止进程”处)。
最好的方法是什么?
Thread.CurrentThread.Interrupt()
或者
Thread.CurrentThread.Abort()?
还是有更好的方法?(我不能使用像布尔“停止”变量这样的“简单”机制,因为“这里有很多代码”非常动态地通过反射等调用其他类。
这还有效吗?还是我只是杀死看门狗线程,而不是要监视的线程?