IInputChannel.WaitForMessage(TimeSpan) Metod

Definition

Returnerar ett värde som anger om ett meddelande har anlänt inom ett angivet tidsintervall.

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

Parametrar

timeout
TimeSpan

TimeSpan Anger det maximala tidsintervallet för att vänta tills ett meddelande tas emot innan tidsgränsen nås.

Returer

true om ett meddelande har anlänt innan har timeout överskridits, annars false.

Undantag

Den angivna timeout överskrids innan åtgärden har slutförts.

Den angivna tidsgränsen är mindre än noll.

Exempel

Följande kod visar hur du implementerar den här metoden:

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

Kommentarer

Anrop WaitForMessage(TimeSpan) leder inte till att ett meddelande tas emot eller bearbetas på något annat sätt.

Metoden WaitForMessage(TimeSpan) finns främst för transacted scenarier där användaren vill ta emot meddelandet med hjälp av en transaktion. När du använder bara Receive normalt för detta måste användaren skapa transaktionen och sedan anropa Receive och hoppas att meddelandet kommer innan transaktionen överskrider tidsgränsen, vilket kanske inte är möjligt.

I stället kan användaren anropa WaitForMessage(TimeSpan) med vilken tidsgräns de vill (även oändligt), och när ett meddelande kommer kan de öppna transaktionen, anropa Receive och vara säker på att de kan få tillbaka meddelandet innan transaktionen upphör att gälla.

Den här metoden är synkron, så den blockerar den aktuella tråden tills ett meddelande är tillgängligt eller tidsgränsen uppnås. Använd WaitForMessage(TimeSpan) när det är acceptabelt att den aktuella tråden blockeras medan den väntar på att ett meddelande ska tas emot i kön. Tråden blockeras upp till den angivna timeout. Om du behöver programbearbetningen för att fortsätta utan att vänta använder du den asynkrona BeginWaitForMessage(TimeSpan, AsyncCallback, Object) metoden.

Anteckningar till implementerare

Åtgärden returnerar false om den angivna timeout överskrids, inte ett timeout-undantag.

Gäller för