我想在ManualResetEvent阻塞线程后调用_myThread.Abort()。所以要么我想要检查线程是否已被阻止,要么我想调用一个只在线程暂停后才调用_myThread.Abort()的委托。
到目前为止我得到了:
public void MyPause()
{
if (_myManualResetEvent == null)
return;
else
_myManualResetEvent.Reset();
}
public void MyResume()
{
if (_myManualResetEvent == null)
return;
else
_myManualResetEvent.Set();
}
public void MyAbort()
{
if (_myManualResetEvent == null)
return;
else
{
//???
}
}
要求_myManualResetEvent.WaitOne(0)之类的东西不起作用,因为它只返回ManualResetEvent的状态,这可能与实际的线程状态不同,但我想知道线程是否已经被阻塞(这意味着它已经调用了WaitOne())。 检查线程状态不起作用,因为ManualResetEvent使用System.Threading.ThreadState.WaitSleepJoin,就像许多其他函数一样。