如果异步请求的AsyncCallback已完成,如何通知您?

时间:2013-01-23 20:41:58

标签: c# multithreading asynchronous mono

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

2 个答案:

答案 0 :(得分:1)

解决这个问题的最简单方法可能不是这样做 - 第二个回调可以同步(使用GetResponse而不是BeginGetResponse),然后你就可以监控IAsyncResult。

或者你也可以使用他们用来保持主线程结束的相同方法:创建另一个

private static ManualResetEvent allDone = new ManualResetEvent(false);

然后在第一个回调中使用

allDone.WaitOne();

并致电

allDone.Set();

在第二个回调中

答案 1 :(得分:0)

你的回调必须向第一个线程发出信号。例如,它可以使用事件来完成。 TaskCompletionSource是一个等待友好的替代方案。