IReplyChannel.WaitForRequest(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, zda je zpráva požadavku přijata před uplynutím zadaného časového intervalu.
public:
bool WaitForRequest(TimeSpan timeout);
public bool WaitForRequest (TimeSpan timeout);
abstract member WaitForRequest : TimeSpan -> bool
Public Function WaitForRequest (timeout As TimeSpan) As Boolean
Parametry
- timeout
- TimeSpan
Určuje TimeSpan , jak dlouho musí být operace požadavku dokončena, než vyprší časový limit a vrátí false
.
Návraty
true
pokud je žádost přijata před uplynutím zadaného časového intervalu; jinak false
.
Příklady
Následující kód ukazuje, jak implementovat tuto metodu:
public bool WaitForRequest(TimeSpan timeout)
{
return this.InnerChannel.WaitForRequest(timeout);
}
Poznámky
Volání WaitForRequest(TimeSpan) nemá za následek přijetí nebo zpracování zprávy s požadavkem.
Metoda BeginWaitForRequest(TimeSpan, AsyncCallback, Object) existuje především pro transakční scénáře, kdy uživatel chce přijmout zprávu pomocí transakce. Při normálním použití ReceiveRequest k tomu musí uživatel vytvořit transakci a poté volat ReceiveRequest 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 WaitForRequest(TimeSpan) a určit časový limit (dokonce nekonečný), pak po přijetí zprávy může transakci otevřít, volat ReceiveRequest a mít jistotu, že může získat zprávu zpět před vypršením platnosti transakce.
Použijte WaitForRequest(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í BeginWaitForRequest(TimeSpan, AsyncCallback, Object) metodu.
Poznámky pro implementátory
Operace se vrátí false
, pokud je překročena zadaná timeout
hodnota.