サーバからデータを非同期的に取得するには、getData.BeginInvoke(callback, null)
を使用します。ここで、getData
はデータを取得するメソッドです。 callback
は、検索されたデータに関する通知をいくつか行います(&)。コールバックのハンドルを待つ
呼び出しメソッドでは、私はWaitHandle
を使用してメソッドが完了するのを待つことをお勧めします。私の質問は:WaitHandle
もコールバックが完了するのを待っていますか?そうでない場合は、どうすればいいですか?
コード:
Func<Data> getData =() =>
{
//...
};
AsyncCallback callback = (IAsyncResult ar) =>
{
//...
};
IAsyncResult result = getData.BeginInvoke(callback, null);
result.AsyncWaitHandle.WaitOne();
注1:私はフレームワーク3.5を使用する必要がありますので、私はasync
& await
注2を使用することはできません:私はこの質問はthis postの重複ではないと思います。
実際に、あなたは他に何もデータつつ、同時に行うことができない場合非同期は(メソッドであなたの最後のものを呼び出すようにしたいと思いますコールバックであなたの流れを続ける。 asyncメソッドが返ってくると、コールバックが呼び出されます。 – Fildor
これはいくつかの光を放つかもしれません:https://docs.microsoft.com/en-us/dotnet/standard/asynchronous-programming-patterns/calling-synchronous-methods-asynchronously非同期操作を開始した直後のブロックは、通常、多くのセンス。関数を同期して呼び出すこともできます。 – Fildor
これは、待機ハンドルをどこに設定するかによって異なります。 msdnソケットの例を見てください:https://msdn.microsoft.com/en-us/library/bew39x2a(v=vs.100).aspx – jdweng