我有一個方法,它調用一個異步方法,並在異步方法完成時觸發一個回調。我想創建一個AutoResetEvent,稱爲異步方法,在AutoResetEvent實例上調用WaitOne(),然後在回調方法中調用Set()方法。像這樣(簡化這個例子):如何阻止異步呼叫完成?
private System.Threading.AutoResetEvent waitRun_m;
public void RunSynchronous()
{
waitRun_m = new System.Threading.AutoResetEvent(false);
CallAsynchronousMethod();
waitRun_m.WaitOne();
}
private void Callback()
{
waitRun_m.Set();
}
現在,是有可能調用CallAsynchronousMethod到了WaitOne之前完成()被調用 - 導致set()來之前WaitOne的被稱爲()。有沒有更好的方法來做到這一點,以避免這個潛在的問題?
在你的代碼示例中,我認爲你的意思是在'RunSynchronous'的主體內鍵入'CallAsynchronousMethod'。 – 2009-12-21 21:18:28
@Daniel Yankowsky - 謝謝。你是對的,我做了改變。 – Jeremy 2009-12-21 21:39:40