我正在使用受约束的执行区域 (CER) 来保护线程的 while 循环中的代码段:
private static void MyThreadFunc()
{
try {
...
while (true)
{
RuntimeHelpers.PrepareConstrainedRegions();
try { }
finally
{
// do something not to be aborted
}
Thread.Sleep(1); // allow while loop to be broken out
}
}
catch (ThreadAbortException e)
{
// handle the exception
}
}
问题是,如果我不在Thread.Sleep(1)
while 循环结束时引入语句,则在线程上调用 Thread.Abort() 的任何尝试都会挂起。有没有更好的方法可以在不使用该Thread.Sleep()
函数的情况下中止线程?