Share via


IAsyncResult インターフェイス

非同期操作を監視および管理するには、IAsyncResult インターフェイスを使用します。IAsyncResult インターフェイスは開始操作から返され、終了操作へ渡されます。これにより、開始操作と終了操作が関連付けられます。開始操作の一部としてコールバックが指定されている場合は、そのコールバックに AsyncResult が渡されます。IAsyncResult インターフェイスのプロパティの例を次に示します。これらのプロパティを使用すると、非同期操作の状態を監視したり、オプションとして開始操作に渡された非同期状態オブジェクトを取得したりできます。

public interface IAsyncResult
{
  Object AsyncState { get; }
  WaitHandle AsyncWaitHandle { get; }
  bool CompletedSynchronously { get; }
  bool IsCompleted { get; }
}
  • AsyncState

    開始操作メソッド呼び出しの最後のパラメータとして渡されたオブジェクトを返します。

  • AsyncWaitHandle

    AsyncWaitHandle プロパティは、WaitHandle.WaitOne、**WaitAny、**または WaitAll を実行するために使用できる WaitHandle を返します。

    メモ   IAsyncResult を実装するオブジェクトでは、AsyncWaitHandle プロパティが読み取られるまで WaitHandle を作成する必要はありません。このタイミングは実装側が決定します。実装側が WaitHandle を作成する場合、WaitHandle に通知して適切な時点で待機を終了する処理は実装側で行う必要があります。たとえば、AsyncResult は、非同期的に呼び出されたメソッドから制御が戻ったときに、呼び出し元に代わって待機を終了します。WaitHandle は作成後、ユーザーが非同期操作を完了するメソッドを呼び出すまで有効である必要があります。非同期操作が完了した時点で、AsyncWaitHandle のオブジェクトを破棄できます。

  • CompletedSynchronously

    CompletedSynchronously プロパティは、開始操作呼び出しが同期的に完了している場合、true に設定されます。

  • IsCompleted

    IsCompleted プロパティは、サーバーによる呼び出し処理の完了後、true に設定されます。

参照   

非同期デザイン パターンの概要 | 非同期メソッド シグネチャ | 非同期操作の AsyncCallback デリゲート | 非同期呼び出しの組み込み