この例では、非同期リクエストが作成され、それが完了すると、そのコールバックから別の非同期リクエストが作成されます。2 番目のコールバックが完了したときに、最初のスレッド (メイン) から通知を受け取るにはどうすればよいですか? 通常は IAsyncResult を監視しますが、2 番目のリクエストの作成は最初のスレッドのスコープ内で行われないため、アクセスできません。
質問する
197 次
2 に答える
1
これを回避する最も簡単な方法は、おそらくそれを行わないことです。2 番目のコールバックを (GetResponse
の代わりに使用してBeginGetResponse
) 同期化することができます。その後、IAsyncResult を監視するだけで済みます。
または、メインスレッドが終了しないようにするために使用するのと同じ方法を使用することもできます。
private static ManualResetEvent allDone = new ManualResetEvent(false);
次に、最初のコールバックで使用します
allDone.WaitOne();
そして電話する
allDone.Set();
2 番目のコールバックで
于 2013-01-23T21:58:17.773 に答える
0
コールバックは、それが完了したことを最初のスレッドに通知する必要があります。たとえば、イベントを使用してこれを行うことができます。TaskCompletionSource
await に適した代替手段です。
于 2013-01-23T21:57:06.380 に答える