IInputChannel.WaitForMessage(TimeSpan) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
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.