我有一个方法,它调用一个异步方法,并在异步方法完成时触发一个回调。我想创建一个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