WaitOne
方法是C#中ManualResetEvent
類的一個成員,它用于等待一個事件變為有信號狀態。WaitOne
方法有以下幾種重載形式:
public int WaitOne(int millisecondsTimeout)
:此方法會等待指定的毫秒數。如果在指定的時間內事件變為有信號狀態,則返回1;如果超時,則返回0。ManualResetEvent resetEvent = new ManualResetEvent(false);
// ...
int result = resetEvent.WaitOne(5000); // 等待5秒鐘
public int WaitOne(int millisecondsTimeout, bool exitContext)
:此方法與第一個方法類似,但可以選擇是否退出當前線程的上下文。如果exitContext
為true
,則當前線程的上下文會被保存并在事件變為無信號狀態時恢復。這對于在異步操作中使用WaitOne
非常有用。ManualResetEvent resetEvent = new ManualResetEvent(false);
// ...
int result = resetEvent.WaitOne(5000, true); // 等待5秒鐘,并嘗試保留當前線程的上下文
public bool WaitOne()
:此方法會無限期地等待事件變為有信號狀態。當事件變為有信號狀態時,返回true
;如果線程被中斷或發生其他錯誤,返回false
。ManualResetEvent resetEvent = new ManualResetEvent(false);
// ...
bool result = resetEvent.WaitOne(); // 無限期等待事件變為有信號狀態
public bool WaitOne(ref bool signaled)
:此方法會等待事件變為有信號狀態,并將signaled
參數的值設置為true
。如果事件在調用WaitOne
之前已經變為有信號狀態,則立即返回true
,并將signaled
設置為true
。如果等待過程中事件變為有信號狀態,則返回true
,并將signaled
設置為true
。如果等待結束時事件仍未變為有信號狀態,則返回false
,并保持signaled
的原始值。ManualResetEvent resetEvent = new ManualResetEvent(false);
bool signaled = false;
// ...
bool result = resetEvent.WaitOne(ref signaled); // 等待事件變為有信號狀態