1

示例中,发出了一个异步请求,当它完成时,从它的回调中发出另一个异步请求。当第二个回调完成时,如何从第一个线程(主线程)通知我?通常我会监控 IAsyncResult,但是第二个请求的创建不是在第一个线程的范围内完成的,所以我无权访问它。

4

2 回答 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 回答