Sdílet prostřednictvím


IInputChannel.WaitForMessage(TimeSpan) Metoda

Definice

Vrátí hodnotu, která označuje, jestli zpráva dorazila v zadaném časovém intervalu.

public:
 bool WaitForMessage(TimeSpan timeout);
public bool WaitForMessage (TimeSpan timeout);
abstract member WaitForMessage : TimeSpan -> bool
Public Function WaitForMessage (timeout As TimeSpan) As Boolean

Parametry

timeout
TimeSpan

Určuje TimeSpan maximální časový interval čekání na doručení zprávy před vypršením časového limitu.

Návraty

Boolean

true pokud zpráva dorazila před překročením; timeout v opačném případě false.

Výjimky

timeout Zadané hodnoty jsou překročeny před dokončením operace.

Zadaný časový limit je menší než nula.

Příklady

Následující kód ukazuje, jak implementovat tuto metodu:

public bool WaitForMessage(TimeSpan timeout)
{
    return this.InnerChannel.WaitForMessage(timeout);
}

Poznámky

Volání WaitForMessage(TimeSpan) nemá za následek přijetí nebo zpracování zprávy jiným způsobem.

Metoda WaitForMessage(TimeSpan) existuje především pro transacted scénáře, kdy uživatel chce přijmout zprávu pomocí transakce. Při použití pouze Receive normálně pro to musí uživatel vytvořit transakci a pak zavolat Receive a doufat, že zpráva přijde před vypršením časového limitu transakce, což nemusí být možné.

Místo toho může uživatel volat WaitForMessage(TimeSpan) s časovým limitem, který chce (dokonce nekonečné), a když přijde zpráva, může otevřít transakci, volat Receive a mít jistotu, že může zprávu získat zpět před vypršením platnosti transakce.

Tato metoda je synchronní, takže blokuje aktuální vlákno, dokud není k dispozici zpráva nebo dojde k vypršení časového limitu. Použijte WaitForMessage(TimeSpan) , pokud je přijatelné, aby aktuální vlákno bylo blokováno, zatímco čeká na doručení zprávy do fronty. Vlákno je blokováno až do zadaného timeout. Pokud potřebujete, aby zpracování aplikace pokračovalo bez čekání, použijte asynchronní BeginWaitForMessage(TimeSpan, AsyncCallback, Object) metodu.

Poznámky pro implementátory

Operace se vrátí false , pokud je zadaná timeout hodnota překročena, nikoli výjimka časového limitu.

Platí pro