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

Создание очередей

За создание новой очереди отвечает статический метод Create класса MessageQueue. В большинстве случаев очереди создаются системным администратором через консоль управления компьютером, однако иногда приложению требуется создать новые очереди на ходу. Метод Create является перегруженным, его параметр строкового типа указывает путь очереди, а параметр логического типа указывает, что очередь должна быть транзакционной. Для создания новой очереди используется фрагмент кода:

MessageQueue.Create(".\\Private$\\TestQ");

Символ "." используется как ссылки на локальную машину, если требуется, его можно заменить именем другого компьютера. Ключевое слово «Private$» означает, что создаваемая очередь является локальной, то есть другие машины сети не имеют доступа к ней. Для создания общедоступной очереди метод Create необходимо указать путь в формате «MachineName\QueueNaitie».

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

Чтобы проверить, что очередь была создана корректно, на вкладке «Server Explorer» найдите очередь TestQ.

Доступ к очередям

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

Метод

Описание

GetPrivateQueuesByMachine

Возвращает локальные очереди на компьютере

GetPublicQueues

Возвращает общедоступные очереди в сети

GetPublicQueuesByCategory

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

GetPublicQueuesByLabel

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

GetPublicQueuesByMachine

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

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

// Получаем список локальных очередей данного компьютера

MessageQueue[] QueueList =

MessageQueue.GetPrivateQueuesByMachine(".");

// В диалоговом окне выводим пути доступных очередей

foreach (MessageQueue queueItem in QueueList)

{

MessageBox.Show(queueItem.Path);

}

Удаление очередей

Для удаления очередей используется статический метод Delete. Параметром метода является полное имя общедоступной или локальной очереди. В следующем примере удаляются локальная очередь с именем TestQ.

MessageQueue.Delete(".\\Private$\\TestQ");

Посылка сообщения

Для посылки сообщения очереди применяется метод Send, который является перегруженным и включает параметры Body, Label и Transaction. Ниже приведен пример кода, где выполняются отправка сообщения.

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

if (MessageQueue.Exists(q.Path))

{

q.Send("Test message","msg1");

q.Close();

}

Для проверки того, что очередь существует, применяется метод Exists. Желательно всегда производить подобную проверку, чтобы при выполнении программы не генерировалось прерывание, вызванное тем, что очередь не создана или находится в другом месте.

Если просмотреть очереди в консоли управления компьютером, в очереди TestQ можно найти сообщение сметкой msg1. При двойном щелчке на сообщении или выборе команды «Свойства» в контекстном меню по правой кнопке мыши можно просмотреть свойства и текст сообщения.