IInputChannel.BeginTryReceive(TimeSpan, AsyncCallback, Object) メソッド

定義

タイムアウトが指定され、状態オブジェクトが関連付けられているメッセージを受信するための、非同期操作を開始します。

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

パラメーター

timeout
TimeSpan

メッセージが利用可能になるまでの待機時間を指定する TimeSpan

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 を返します。

適用対象