IInputChannel.WaitForMessage(TimeSpan) Метод

Определение

Возвращает значение, указывающее, было ли сообщение получено в течение заданного промежутка времени.

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

Параметры

timeout
TimeSpan

Объект TimeSpan задает максимальный интервал времени ожидания прихода сообщения.

Возвращаемое значение

Boolean

Значение true, если сообщение пришло до превышения значения, заданного параметром timeout; в противном случае — значение false.

Исключения

Указанное значение timeout превышено до завершения операции.

Заданное значение времени ожидания меньше нуля.

Примеры

В следующем примере кода показано, как реализовать этот метод.

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

Комментарии

Вызов метода WaitForMessage(TimeSpan) не приводит к получению сообщения или его обработке каким-либо другим образом.

Метод WaitForMessage(TimeSpan) в основном существует для транзакционных сценариев, в которых пользователю требуется получать это сообщение в рамках транзакции. Если, как обычно, использовать для этого метод Receive, пользователю придется сперва создать транзакцию, а затем вызвать метод Receive и надеяться, что сообщение будет получено до истечения времени ожидания транзакции, что может быть невозможно.

Вместо этого пользователь может вызвать метод WaitForMessage(TimeSpan), задав любое время ожидания (возможно, бесконечное), а затем, когда придет сообщение, открыть транзакцию, вызвать метод Receive и быть уверенным, что ответное сообщение будет получено до истечения времени ожидания транзакции.

Этот метод является синхронным, поэтому он блокирует текущий поток до появления доступного сообщения или истечения времени ожидания. Метод WaitForMessage(TimeSpan) используется, если текущий поток можно заблокировать на время, пока ожидается поступление сообщения в очередь. Поток заблокирован вплоть до указанного значения timeout. Если работа приложения должна продолжаться без ожидания, используйте асинхронный метод BeginWaitForMessage(TimeSpan, AsyncCallback, Object).

Примечания для тех, кто реализует этот метод

Если превышено заданное значение false, операция возвращает значение timeout, а не исключение, связанное с истечением времени ожидания.

Применяется к