0

私はこのようなことをしようとしています:

EventWaitHandle handler = new EventWaitHandle(false, EventResetMode.AutoReset)

//This code will run in background thread
private void AsyncWait() {
    while (true) {
        handler.WaitOne();
        //LongRunningOperation()
    }
}

コードの他の場所には、以下を呼び出すメソッドがあります。

handler.Set()

したがって、LongRunningOperation() が実行されます。

問題は、スレッドの実行handler.Set()中に が再度呼び出される可能性があることです。AsyncWait()LongRunningOperation()

これにより、がまだ実行されている間に が呼び出さLongRunningOperation()れるたびに、 が呼び出されることはありません。handler.Set()AsyncWait()LongRunningOperation()

これを正しくする方法は?:(

4

1 に答える 1