在this示例中,发出了异步请求,当它完成时,另一个异步请求来自其回调。第二个回调完成后,如何从第一个线程(主)通知我?通常我会监视IAsyncResult,但第二个请求的创建不是在第一个线程的范围内完成的,所以我无法访问它。
答案 0 :(得分:1)
解决这个问题的最简单方法可能不是这样做 - 第二个回调可以同步(使用GetResponse
而不是BeginGetResponse
),然后你就可以监控IAsyncResult。
或者你也可以使用他们用来保持主线程结束的相同方法:创建另一个
private static ManualResetEvent allDone = new ManualResetEvent(false);
然后在第一个回调中使用
allDone.WaitOne();
并致电
allDone.Set();
在第二个回调中
答案 1 :(得分:0)
你的回调必须向第一个线程发出信号。例如,它可以使用事件来完成。 TaskCompletionSource
是一个等待友好的替代方案。