Bagikan melalui


IInputChannel.BeginTryReceive(TimeSpan, AsyncCallback, Object) Metode

Definisi

Memulai operasi asinkron untuk menerima pesan yang memiliki waktu habis yang ditentukan dan objek status yang terkait dengannya.

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

Parameter

timeout
TimeSpan

TimeSpan yang menentukan interval waktu untuk menunggu pesan tersedia.

callback
AsyncCallback

Delegasi AsyncCallback yang menerima pemberitahuan penyelesaian operasi asinkron.

state
Object

Objek, yang ditentukan oleh aplikasi, yang berisi informasi status yang terkait dengan operasi asinkron.

Mengembalikan

IAsyncResult yang mereferensikan operasi penerimaan asinkron.

Pengecualian

Yang ditentukan timeout terlampaui sebelum operasi selesai.

Batas waktu yang ditentukan kurang dari nol.

Contoh

Kode berikut mengilustrasikan cara menerapkan metode ini:

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

Keterangan

Gunakan metode asinkron BeginTryReceive(TimeSpan, AsyncCallback, Object) saat Anda ingin pemrosesan aplikasi dilanjutkan tanpa menunggu. Gunakan metode sinkron TryReceive(TimeSpan, Message) ketika dapat diterima agar utas saat ini diblokir saat membalas pesan permintaan atau sampai interval batas waktu terlampaui.

Operasi tidak selesai sampai pesan tersedia di saluran atau waktu habis terjadi.

Jika Anda akan menangani batas waktu dan tidak hanya melempar ulang atau membungkus TimeoutException, maka Anda harus memanggil BeginTryReceive(TimeSpan, AsyncCallback, Object) alih-alih BeginReceive.

Jika Anda tidak akan mengobati batas waktu secara khusus, cukup panggil BeginReceive, jika tidak, Anda kehilangan informasi kesalahan.

Catatan Bagi Implementer

Operasi mengembalikan false dari EndTryReceive(IAsyncResult, Message) jika yang ditentukan timeout terlampaui.

Berlaku untuk