在C#中,ManualResetEvent類是一個同步基元,用于控制多個線程的執行順序。下面是一些ManualResetEvent類的常見用法:
等待一個事件的發生:可以使用ManualResetEvent的WaitOne方法來等待事件的發生。當事件被觸發時,WaitOne方法將返回true,線程可以繼續執行。如果事件還沒有被觸發,WaitOne方法將阻塞線程,直到事件發生或者超時。
設置一個事件:可以使用ManualResetEvent的Set方法來設置一個事件。當事件被設置后,所有等待這個事件的線程將被喚醒,可以繼續執行。
重置一個事件:可以使用ManualResetEvent的Reset方法來重置一個事件。當事件被重置后,所有等待這個事件的線程將被阻塞,直到事件再次被設置。
等待多個事件的發生:可以使用ManualResetEvent的WaitAny方法或WaitAll方法來等待多個事件中的一個或全部事件的發生。WaitAny方法將返回第一個觸發的事件的索引,WaitAll方法將在所有事件都被觸發后返回。
超時等待事件的發生:可以使用ManualResetEvent的WaitOne方法的重載方法,傳入一個超時時間來等待事件的發生。如果超過指定的超時時間,WaitOne方法將返回false,線程可以繼續執行。
這些是ManualResetEvent類的一些常見用法,可以根據實際需求選擇合適的方法來控制線程的執行順序。