Новое в MSMQ ... Моя локальная очередь никогда не получает мое тестовое сообщение. Я проверил, что очереди сообщений и триггеры очереди сообщений запущены в диалоговом окне «Мои сервисы» (Vista Ultimate). Мысли?Закрытая очередь MSMQ - не получает
class ConsoleApplication
{
private const string Path = @".\private$\SomeQueue";
static void Main(string[] args)
{
var queue = !MessageQueue.Exists(Path)
? MessageQueue.Create(Path)
: new MessageQueue(Path) { Formatter = new BinaryMessageFormatter() };
queue.ReceiveCompleted += queue_ReceiveCompleted;
queue.BeginReceive();
queue.Send("test message");
Console.ReadLine();
queue.Close();
}
static void queue_ReceiveCompleted(object sender,
ReceiveCompletedEventArgs e)
{
Console.WriteLine("Received message...");
var queue = (MessageQueue)sender;
try
{
var message = queue.EndReceive(e.AsyncResult);
Console.WriteLine("Processing message...");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
queue.BeginReceive();
}
}
}
EDIT: Просто была мысль, попробуйте удалить и заново создать очередь с MessageQueue.Delete (Path). И это сработало. Наверное, моя очередь была как-то закрыта.
Получить ссылку на новый объект на очередь объекта отправителя var queue = (MessageQueue) отправитель; , а затем используя тот же объект для нового BeginReceive(). огромная ошибка. Помните об исключении переполнения стека, помните об этом – Jsinh