我正在使用實施此階段的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()
是一個原因,但不是不受歡迎的原因?
如果我使用與接收消息相同的隊列作爲BeginReceive()
eventhandler它工作正常。如何識別這個?
您可以訂閱UnhandledException當前'AppDomain' – VMAtm