如何检查ManualResetEvent的线程状态或在被阻止时调用?

时间:2014-05-14 11:30:27

标签: c# .net multithreading abort manualresetevent

我想在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,就像许多其他函数一样。

0 个答案:

没有答案