AsyncResult.AsyncWaitHandle プロパティとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > AsyncResult.AsyncWaitHandle プロパティの意味・解説 

AsyncResult.AsyncWaitHandle プロパティ

Win32 同期ハンドルカプセル化し、各種同期スキーム実装できるようにする WaitHandle を取得します

名前空間: System.Runtime.Remoting.Messaging
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Overridable ReadOnly
 Property AsyncWaitHandle As WaitHandle
Dim instance As AsyncResult
Dim value As WaitHandle

value = instance.AsyncWaitHandle
public virtual WaitHandle AsyncWaitHandle { get;
 }
public:
virtual property WaitHandle^ AsyncWaitHandle {
    WaitHandle^ get ();
}
/** @property */
public WaitHandle get_AsyncWaitHandle ()
public function get AsyncWaitHandle
 () : WaitHandle

プロパティ
Win32 同期ハンドルカプセル化し、各種同期スキーム実装できるようにする WaitHandle

解説解説

このメソッドによって返される WaitHandle は、非同期操作完了する自動的にシグナル通知されます。

IAsyncResult を実装しているオブジェクトは、WaitHandle クラスから直接派生する要はありません。WaitHandle は、同期プリミティブラップし、呼び出し完了した後でシグナル状態になる必要があります。これによって、クライアント呼び出しステータスポーリングする代わりに呼び出し完了するまで待機できます共通言語ランタイムは、Win32 同期プリミティブ反映した待機可能オブジェクトとして、ManualResetEvent、AutoResetEvent、Mutex などを提供します

WaitHandle は、これらの同期オブジェクト待機サポートし、"any (一部)" または "all (すべて)" のセマンティクスシグナル態となるメソッドとして、WaitHandle.WaitOne、WaitAny、および WaitAll を提供します。これらのメソッドは、デッドロック避けるためにコンテキスト認識しますAsyncResult.AsyncWaitHandle は、割り当て対象オブジェクト占有することも、オブジェクトをあまり拘束しないように割り当てることもできますいずれの方法割り当てるかは、IAsyncResult実装するオブジェクト選択します

IAsyncResult返すクラス実装するオブジェクトには、AsyncWaitHandle をあまり拘束力のない方法割り当てることができます。ただし、このハンドルは、割り当てた後は EndInvoke呼び出されるまで有効なままです。このとき、AsyncWaitHandle割り当てられているオブジェクト再利用できます

注意に関するメモ注意

AsyncWaitHandle プロパティ格納されている WaitHandle使用して非同期呼び出し完了するまで現在のスレッドブロックできます。ただし、WaitHandle は、BeginInvoke呼び出し時に指定された AsyncCallback がある場合には、それを無視します。たがってWaitHandle使用して非同期呼び出し完了するまでスレッドブロックし場合でも、AsyncCallback実行完了する前にアプリケーションシャットダウンしてしまう状況生じ可能性ありますこのような状況例については、AsyncResult クラストピックの例を参照し、Thread.Sleep ステートメント削除してください

使用例使用例

AsyncWaitHandle プロパティ使用してデリゲートでの非同期呼び出し対すWaitHandle取得する方法次のコード例示しますプログラム例全体については、AsyncResult クラストピックの例を参照してください。この例では、WaitHandle明示的にシグナル通知されないことに注意してください。これは、IAsyncResult実装が、このプロパティから取得した WaitHandleシグナル通知する必要があるためです。

Dim sampleDelegate As New
 SampSyncSqrDelegate(AddressOf sampSyncObj.Square)
param = 8

Console.WriteLine("Making a single asynchronous call on the context-bound
 object:")

Dim ar1 As IAsyncResult = sampleDelegate.BeginInvoke(param,
 New AsyncCallback(AddressOf AsyncResultSample.MyCallback),
 param)

Console.WriteLine("Waiting for the asynchronous call to complete...")
Dim wh As WaitHandle = ar1.AsyncWaitHandle
wh.WaitOne()

Console.WriteLine("")
Console.WriteLine("Waiting for the AsyncCallback to complete...")
Thread.Sleep(1000)
SampSyncSqrDelegate sampleDelegate = new SampSyncSqrDelegate(sampSyncObj.Square);
param = 8;

Console.WriteLine("Making a single asynchronous call on the context-bound object:");

IAsyncResult ar1 = sampleDelegate.BeginInvoke( param, 
                      new AsyncCallback(AsyncResultSample.MyCallback),
 
                      param);

Console.WriteLine("Waiting for the asynchronous call to complete...");
WaitHandle wh = ar1.AsyncWaitHandle;
wh.WaitOne();

Console.WriteLine("");
Console.WriteLine("Waiting for the AsyncCallback to complete...");
Thread.Sleep(1000);
SampSyncSqrDelegate^ sampleDelegate = gcnew SampSyncSqrDelegate( sampSyncObj, &SampleSyncronized::Square
 );
param = 8;
Console::WriteLine( "Making a single asynchronous call on the context-bound
 Object*:" );
IAsyncResult^ ar1 = sampleDelegate->BeginInvoke( param, gcnew AsyncCallback( AsyncResultSample::MyCallback
 ), param );
Console::WriteLine( "Waiting for the asynchronous call to
 complete..." );
WaitHandle^ wh = ar1->AsyncWaitHandle;
wh->WaitOne();
Console::WriteLine( "" );
Console::WriteLine( "Waiting for the AsyncCallback to complete..."
 );
Thread::Sleep( 1000 );
return 0;

SampSyncSqrDelegate sampleDelegate =
    new SampSyncSqrDelegate(sampSyncObj.Square);
param = 8;
value = param;
Console.WriteLine("Making a single asynchronous call on the "
    + "context-bound object:");
IAsyncResult ar1 = sampleDelegate.BeginInvoke(param,
    new AsyncCallback(AsyncResultSample.MyCallback), sampleDelegate);

Console.WriteLine("Waiting for the asynchronous call to complete...");
WaitHandle wh = ar1.get_AsyncWaitHandle();

wh.WaitOne();
Console.WriteLine("");
Console.WriteLine("Waiting for the AsyncCallback to complete...");
System.Threading.Thread.Sleep(1000);
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
AsyncResult クラス
AsyncResult メンバ
System.Runtime.Remoting.Messaging 名前空間
WaitHandle


このページでは「.NET Framework クラス ライブラリ リファレンス」からAsyncResult.AsyncWaitHandle プロパティを検索した結果を表示しています。
Weblioに収録されているすべての辞書からAsyncResult.AsyncWaitHandle プロパティを検索する場合は、下記のリンクをクリックしてください。
 全ての辞書からAsyncResult.AsyncWaitHandle プロパティ を検索

英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

AsyncResult.AsyncWaitHandle プロパティのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



AsyncResult.AsyncWaitHandle プロパティのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS