在此示例中,发出了一个异步请求,当它完成时,从它的回调中发出另一个异步请求。当第二个回调完成时,如何从第一个线程(主线程)通知我?通常我会监控 IAsyncResult,但是第二个请求的创建不是在第一个线程的范围内完成的,所以我无权访问它。
问问题
197 次
2 回答
1
解决这个问题的最简单方法可能是不这样做 - 第二个回调可以同步(使用GetResponse
而不是BeginGetResponse
),然后您可以只监视 IAsyncResult。
或者,您也可以使用他们用来防止主线程结束的相同方法:创建另一个
private static ManualResetEvent allDone = new ManualResetEvent(false);
然后在第一个回调中使用
allDone.WaitOne();
并打电话
allDone.Set();
在第二个回调中
于 2013-01-23T21:58:17.773 回答
0
您的回调必须向第一个线程发出信号,表明它已完成。例如,它可以使用事件来做到这一点。TaskCompletionSource
是一个等待友好的替代方案。
于 2013-01-23T21:57:06.380 回答