Aracılığıyla paylaş


IInputChannel.BeginTryReceive(TimeSpan, AsyncCallback, Object) Yöntem

Tanım

Belirtilen zaman aşımına ve kendisiyle ilişkili durum nesnesine sahip bir ileti almak için zaman uyumsuz bir işlem başlatır.

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

Parametreler

timeout
TimeSpan

bir TimeSpan iletinin kullanılabilir duruma gelmesinin beklenebilecek zaman aralığını belirtir.

callback
AsyncCallback

AsyncCallback Zaman uyumsuz işlem tamamlama bildirimini alan temsilci.

state
Object

Uygulama tarafından belirtilen ve zaman uyumsuz işlemle ilişkili durum bilgilerini içeren bir nesne.

Döndürülenler

IAsyncResult Zaman uyumsuz alma işlemine başvuran.

Özel durumlar

timeout belirtilen işlem tamamlanmadan önce aşıldı.

Belirtilen zaman aşımı sıfırdan küçük.

Örnekler

Aşağıdaki kodda bu yöntemin nasıl uygulandığı gösterilmektedir:

public IAsyncResult BeginTryReceive(TimeSpan timeout, AsyncCallback callback, object state)
{
    TryReceiveAsyncResult<TChannel> result = new TryReceiveAsyncResult<TChannel>(this, timeout, callback, state);
    result.Begin();
    return result;
}

Açıklamalar

Uygulama işlemenin beklemeden devam etmesi için zaman uyumsuz BeginTryReceive(TimeSpan, AsyncCallback, Object) yöntemini kullanın. Geçerli iş parçacığı istek iletisini yanıtlarken veya zaman aşımı aralığı aşılana kadar engellenebilir olduğunda zaman uyumlu TryReceive(TimeSpan, Message) yöntemini kullanın.

kanalda bir ileti kullanılabilir duruma gelene veya zaman aşımı oluşana kadar işlem tamamlanmaz.

Zaman aşımlarını işleyecek ve yalnızca öğesini yeniden atmayacak veya sarmalayacaksanız TimeoutExceptionyerine çağrısı BeginTryReceive(TimeSpan, AsyncCallback, Object)BeginReceiveyapmalısınız.

Zaman aşımlarını özel olarak ele almayacaksanız yalnızca çağrısı BeginReceiveyapın, aksi takdirde hata bilgilerini kaybedersiniz.

Uygulayanlara Notlar

Belirtilen timeout değerin aşılması durumunda işlem' den EndTryReceive(IAsyncResult, Message) döndürülüyorfalse.

Şunlara uygulanır