Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод указания по лабор работам.rtf
Скачиваний:
4
Добавлен:
14.11.2019
Размер:
7.3 Mб
Скачать

Чтение сообщений очереди

Для чтения сообщения из очереди используется метод Peek или Receive. Метод Peek читает первое сообщение в очереди. Он используется для проверки наличия сообщений в очереди и проверки ее свойств. При этом сообщение не удаляется. Если вызвать метод несколько раз, он будет возвращать одно и то же сообщение, пока в очереди не появится сообщение более высокого приоритета. Метод Receive читает сообщение и удаляет его из очереди.

Применение метода Peek демонстрируется в следующем фрагменте кода.

// Подключение к очереди

MessageQueue q = new MessageQueue(".\\Private$\\TestQ");

// Установка форматера тела сообщения.

q.Formatter = new XmlMessageFormatter(new Type[]

{typeof(System.String)});

try

{

// Просмотр и форматирование сообщения.

System.Messaging.Message myMessage = q.Peek();

String str = (String)myMessage.Body;

// Вывод тела сообщения на экран.

MessageBox.Show(str);

}

catch (MessageQueueException)

{

// Обработка исключений, связанных с очередями.

}

// Обработка исключений, связанных с сериализацией.

catch (InvalidOperationException ex)

{

Console.WriteLine(ex.Message);

}

Применение метода Receive демонстрируется в следующем фрагменте кода.

MessageQueue q = new MessageQueue(".\\Private$\\TestQ");

q.Formatter = new XmlMessageFormatter(new Type[] { typeof(System.String) });

try

{

System.Messaging.Message myMessage = q.Receive();

String str = (String)myMessage.Body;

MessageBox.Show(str);

}

catch (MessageQueueException)

{

}

catch (InvalidOperationException ex)

{

Console.WriteLine(ex.Message);

}

Удаление сообщений из очереди

Для удаления сообщений используется метод Purge объекта MessageQueue. Следующий фрагмент кода удаляет все сообщения из очереди TestQ.

MessageQueue q = new MessageQueue(".\\Private$\\TestQ");

q.Purge();

В реальной очереди вам, скорее всего, не придется удалять сообщения. Метод Purge применяется, в основном, для журнальных очередей. Если свойство UseJournalQueue установлено при создании очереди значением True, каждое сообщение дублируется в журнальной очереди. Для удаления журнальной копии очереди TestQ применяется следующий фрагмент кода:

MessageQueue q = new MessageQueue(".\\Private$\\TestQ\\Journal$");

q.Purge();

Рекомендуемые программные средства и литература

Для выполнения данной лабораторной работы следует использовать языки C# или Visual Basic .NET.

Рекомендуемая литература по созданию многопоточных приложений на VB .NET:

  1. Петрусос Е. Эффективная работа: Visual Basic .NET.-СПб.: Питер, 2002. 928 с.

  2. Корнелл Г., Моррисон Дж. Программирование на VB. NET: учебный курс. СПб.: Питер, 2002. 400 с.

  3. Эппламан Д. Переход на VB .NET: стратегии, концепции, код. CПб.: Питер, 2002. 464 c.

Рекомендуемая литература по созданию многопоточных приложений на C#:

  1. Троелсен Э. С# и платформа .NET. СПб.: Питер, 2003. 800 с.

  2. Секунов Н.Ю. Разработка приложений на С++ и С#. СПб.: Питер, 2003. 608 с.

  3. Шилдт Г. С#. СПб.: Питер, 2003. 512 с.