Поделиться через


Практическое руководство. Просмотр первого сообщения в очереди

Обновлен: Ноябрь 2007

Метод Peek может использоваться для просмотра первого сообщения в любой очереди без его удаления из очереди. Это позволяет компоненту получить информацию из очереди, не мешая остальным приложениям и компонентам получать сообщения, подлежащие обработке.

5tete99e.alert_note(ru-ru,VS.90).gifПримечание.

Метод Peek позволяет просмотреть только первое сообщение в очереди. Поскольку во время его просмотра сообщение из очереди не извлекается, просмотр следующих сообщений невозможен. Для просмотра всех сообщений в очереди без их извлечения используйте метод GetAllMessages или метод GetMessageEnumerator. Дополнительные сведения см. в разделе Наборы очередей и сообщений.

Если при вызове метода Peek в очереди нет ни одного сообщения, метод ожидает появления сообщения. Для ограничения срока ожидания для метода можно установить период ожидания. Период ожидания задается в виде объекта TimeSpan. В большинстве случаев период ожидания устанавливается или на ноль, когда метод проверяет наличие сообщения и не ждет ни минуты, или на бесконечность (по умолчанию), когда метод ждет до тех пор, пока сообщение не появится. Это следует задать в коде, используя следующий синтаксис:

msg.TimeToBeReceived = System.Messaging.Message.InfiniteTimeout
     msg.TimeToBeReceived = System.Messaging.Message.InfiniteTimeout;
msg.set_TimeToBeReceived(System.Messaging.Message.InfiniteTimeout);

Период ожидания также можно установить в окне Свойства, задав свойство TimeToBeReceived.

5tete99e.alert_note(ru-ru,VS.90).gifСовет.

При использовании зависимых клиентов убедитесь в том, что часы на клиентском компьютере синхронизированы с часами на сервере, на котором работает система очередей сообщений. В противном случае передача сообщения, у которого свойство TimeToBeReceived не установлено в значение InfiniteTimeout, может вызвать непредсказуемое поведение системы.

Просмотр может быть синхронным или асинхронным. Дополнительные сведения см. в разделе Практическое руководство. Асинхронное получение сообщений.

Синхронный просмотр сообщений

  1. Создайте экземпляр компонента MessageQueue и задайте в качестве значения свойства Path очередь, на которую необходимо сослаться. Дополнительные сведения см. в разделе Практическое руководство. Создание экземпляров компонента MessageQueue.

  2. Создайте экземпляр объекта Message для хранения данных, которые метод Peek копирует из очереди.

  3. Вызовите метод Peek для получения информации о первом сообщении в очереди. При необходимости для метода Peek можно установить период ожидания. Для этого введите промежуток времени (в качестве объекта TimeSpan), в течение которого метод должен ждать, в качестве аргумента метода.

    В следующем примере кода показано, как можно использовать метод Peek для получения и отображения информации о первом сообщении в очереди:

    Public Sub LookFirstMessage()
        Dim NewQueue As New System.Messaging.MessageQueue(".\MyQueue")
        Dim FirstMessage As System.Messaging.Message
        FirstMessage = NewQueue.Peek
        Dim targetNames() As String = {"System.String,mscorlib"}
        FirstMessage.Formatter = _
           New System.Messaging.XmlMessageFormatter(targetNames)
        Dim label As String = CStr(FirstMessage.Label)
    End Sub
    
     public void LookFirstMessage()
        {
            System.Messaging.MessageQueue newQueue =
               new System.Messaging.MessageQueue(".\\MyQueue");
            System.Messaging.Message firstMessage;
            string[] types = { "System.String,mscorlib" };
            firstMessage = newQueue.Peek();
            firstMessage.Formatter =
               new System.Messaging.XmlMessageFormatter(types);
            string label = firstMessage.Label.ToString();
        }
    

См. также

Задачи

Практическое руководство. Получение сообщений программным способом

Практическое руководство. Создание экземпляров компонента MessageQueue

Другие ресурсы

Чтение и получение сообщений