Я использую Реализация Этап этого URL-адреса how-can-i-read-messages-from-a-queue-in-parallel, он работает хорошо, когда я использовал его раньше, через какое-то время он не работает, Понимаете, что происходит? Проведя время, я делаю вывод, что программа останавливается по определенному методу.Task.StartNew.ReceiveAsync() не работает должным образом при получении сообщений от MSMQ
/// <summary>
/// APM -> TAP conversion for MessageQueue.Begin/EndPeek.
/// </summary>
private static Task<Message> PeekAsync(MessageQueue messageQueue)
{
return Task.Factory.FromAsync(messageQueue.BeginPeek(), messageQueue.EndPeek);
}
когда я закомментировать эту реализацию на RunAsync()
метода и вызова метода ReceiveAsync()
/// <summary>
/// APM -> TAP conversion for MessageQueue.Begin/EndReceive.
/// </summary>
private static Task<Message> ReceiveAsync(MessageQueue messageQueue, TimeSpan timeout)
{
return Task.Factory.FromAsync(messageQueue.BeginReceive(timeout), messageQueue.EndPeek);
}
затем программа кончить, не является исключением, ни какой-либо вещи происходят. Просто программа прекращается.
с моей перспективы Task.Factory.FromAsync()
- причина, но не undesrtand почему ??
Если я использую ту же очередь с получением сообщений, как BeginReceive()
обработчик событий, он работает нормально. Как узнать об этом?
Вы можете подписаться на UnhandledException для тока 'AppDomain' – VMAtm