IInputChannel.BeginTryReceive(TimeSpan, AsyncCallback, Object) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
タイムアウトが指定され、状態オブジェクトが関連付けられているメッセージを受信するための、非同期操作を開始します。
public:
IAsyncResult ^ BeginTryReceive(TimeSpan timeout, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginTryReceive (TimeSpan timeout, AsyncCallback callback, object state);
abstract member BeginTryReceive : TimeSpan * AsyncCallback * obj -> IAsyncResult
Public Function BeginTryReceive (timeout As TimeSpan, callback As AsyncCallback, state As Object) As IAsyncResult
パラメーター
- callback
- AsyncCallback
非同期操作の完了通知を受信する AsyncCallback デリゲート。
- state
- Object
非同期操作に関連付けられている状態情報を格納するオブジェクト。アプリケーションで指定します。
戻り値
非同期受信の操作を参照する IAsyncResult。
例外
操作が完了する前に、指定した timeout
が経過しました。
指定したタイムアウトの値が 0 未満です。
例
このメソッドを実装する方法を次のコードに示します。
public IAsyncResult BeginTryReceive(TimeSpan timeout, AsyncCallback callback, object state)
{
TryReceiveAsyncResult<TChannel> result = new TryReceiveAsyncResult<TChannel>(this, timeout, callback, state);
result.Begin();
return result;
}
注釈
待機せずにアプリケーションの処理を継続する必要がある場合は、非同期の BeginTryReceive(TimeSpan, AsyncCallback, Object) メソッドを使用します。 要求メッセージに応答している間、またはタイムアウト期間が経過するまで、現在のスレッドがブロックされてもかまわない場合は、同期 TryReceive(TimeSpan, Message) メソッドを使用します。
この操作は、チャネルでメッセージを使用できるようになるか、タイムアウトが発生するまで完了しません。
単に TimeoutException を際スローまたはラップするのではなく、タイムアウトを処理する場合は、BeginTryReceive(TimeSpan, AsyncCallback, Object) ではなく BeginReceive を呼び出す必要があります。
タイムアウトの特別な処理を行わない場合は、単に BeginReceive を呼び出します。そうしないと、エラー情報が失われます。
注意 (実装者)
指定した false
が経過した場合、操作は EndTryReceive(IAsyncResult, Message) から timeout
を返します。
適用対象
.NET