使用ManualResetEvent等待内部

时间:2017-11-07 14:59:09

标签: c# manualresetevent

我想通过While进行冻结操作:

    do
    {
        ManualResetEvent.Reset(); // Here i want to wait

        // Here i am doing my stuff...
    }

    while (some boolean value);
}

我的ManualResetEvent

private static ManualResetEvent _manualResetEvent;

public static ManualResetEvent ManualResetEvent
{
    get { return _manualResetEvent; }
    set { _manualResetEvent = value; }
}

ManualResetEvent = new ManualResetEvent(false);

在我的代码中通过Button的某些方面,我只想冻结我的操作:

private void btnPause_Click(object sender, RoutedEventArgs e)
{
    ManualResetEvent.WaitOne();
}

这是正确的方法吗?

1 个答案:

答案 0 :(得分:2)

你有两个功能倒退。您要等待的循环需要使用.WaitOne()。此外,如果您希望它在开始时运行,则需要将重置事件初始化为true

初​​始化

private static ManualResetEvent _manualResetEvent;

public static ManualResetEvent ManualResetEvent
{
    get { return _manualResetEvent; }
    set { _manualResetEvent = value; }
}

ManualResetEvent = new ManualResetEvent(true); //Set it to true to let it run at the start.

    do
    {
        ManualResetEvent.WaitOne(); // Here i want to wait

        // Here i am doing my stuff...
    }

    while (some boolean value);
}

别处

private void btnPause_Click(object sender, RoutedEventArgs e)
{
    ManualResetEvent.Reset();
}
private void btnUnPause_Click(object sender, RoutedEventArgs e)
{
    ManualResetEvent.Set();
}