次の方法で共有


MessageQueue.BeginPeek メソッド (TimeSpan, Object, AsyncCallback)

指定したタイムアウトと指定した状態オブジェクトを持つ非同期のピーク操作を実行します。状態オブジェクトは、操作の有効期間を通じて関連付けられた情報を提供します。このオーバーロードは、コールバックを通じて操作のイベント ハンドラ ID の通知を受信します。この操作は、メッセージをキューで使用できるようになる、タイムアウトが発生するまで完了しません。

Overloads Public Function BeginPeek( _
   ByVal timeout As TimeSpan, _   ByVal stateObject As Object, _   ByVal callback As AsyncCallback _) As IAsyncResult
[C#]
public IAsyncResult BeginPeek(TimeSpantimeout,objectstateObject,AsyncCallbackcallback);
[C++]
public: IAsyncResult* BeginPeek(TimeSpantimeout,Object* stateObject,AsyncCallback* callback);
[JScript]
public function BeginPeek(
   timeout : TimeSpan,stateObject : Object,callback : AsyncCallback) : IAsyncResult;

パラメータ

  • timeout
    メッセージを使用できるようになるまでの待機時間を示す TimeSpan
  • stateObject
    非同期操作に関連付けられている情報を保持する状態オブジェクト。アプリケーションで指定します。
  • callback
    非同期操作の完了通知を受信する AsyncCallback

戻り値

ポストされた非同期要求を識別する IAsyncResult

例外

例外の種類 条件
ArgumentException timeout パラメータに指定された値が無効です。
MessageQueueException メッセージ キューの API にアクセスしたときにエラーが発生しました。

解説

このオーバーロードを使用すると、キューのメッセージが利用可能になったとき、または指定した時間間隔が経過したときに、コールバック パラメータで指定されたコールバックが直接起動されます。 PeekCompleted イベントは発生しません。 BeginPeek の他のオーバーロードは、このコンポーネントに依存して PeekCompleted イベントを発生させます。

メモ   メッセージが既にキューに存在する場合は、 PeekCompleted も発生します。

メモ    BeginPeek メソッドからすぐに制御が戻りますが、非同期操作はイベント ハンドラが呼び出されるまで完了しません。

BeginPeek は非同期であるため、これを呼び出すことによって、現在の実行スレッドをブロックせずにキューをピークできます。キューを同期的にピークするには、 Peek メソッドを使用します。

非同期操作が完了した後で、 BeginPeek または BeginReceive をイベント ハンドラでもう一度呼び出すと、通知の受信を継続できます。

BeginPeek は、メソッドが開始した非同期操作を識別する IAsyncResult を返します。操作の有効期間を通じて、この IAsyncResult を使用できます。ただし、通常これは EndPeek が呼び出されるまでは使用しません。しかし、複数の非同期操作を開始する場合は、それらの IAsyncResult 値を 1 つの配列内に配置して、すべての操作の完了を待つか、どれか 1 つの操作の完了を待つかを指定できます。この場合は、 IAsyncResultAsyncWaitHandle プロパティを使用して、完了した操作を識別します。

状態オブジェクトは、状態情報を操作に関連付けます。たとえば、 BeginPeek を複数回呼び出して複数の操作を開始した場合、定義した個別の状態オブジェクトによって各操作を識別できます。

このメソッドが各種のワークグループ モードで使用できるかどうかを次の表に示します。

ワークグループ モード 使用可否
ローカル コンピュータ はい
ローカル コンピュータ + 直接書式名 はい
リモート コンピュータ いいえ
リモート コンピュータ + 直接書式名 はい

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

.NET Framework セキュリティ:

参照

MessageQueue クラス | MessageQueue メンバ | System.Messaging 名前空間 | MessageQueue.BeginPeek オーバーロードの一覧 | EndPeek | PeekCompleted | BeginReceive | Peek | Receive | AsyncCallback | TimeSpan