Microsoft Message Queue (MSMQ) からメッセージをピークするアプリケーションを作成しています。アプリケーションが順番に (最初のメッセージから最後のメッセージまで) MSMQ メッセージをピークするようにします。最後のメッセージを完全にピークした後、MSMQ が新しいメッセージを受信するまで、メイン スレッドはブロックされます。TimeSpan=MessageQueue.InfiniteTimeoutでMessageQueue.Peek(TimeSpan, Cursor, PeekAction) メソッドを
既に使用しており、問題があります。 (約 1000 日)、私は既に TimeSpan = TimeSpan.MaxValue を切り替えましたが、成功していません。解決策やアドバイスを教えてください。ありがとう!
私のコードは次のようになります:
while (true) {
if (isTheFirst) {
try {
ret = mq.Peek(MessageQueue.InfiniteTimeout, cursor, PeekAction.Current);
Console.WriteLine(ret.Id);
isTheFirst = false;
} catch (MessageQueueException e) {
// what can we do?
}
} else {
try {
// because MessageQueue.InfiniteTimeout value approximate 49 days, so if
// during 49 days, Message Queue didn't receive any message, my app will
// thrown exception but i want my app to continue wait for new message arrive
ret = mq.Peek(MessageQueue.InfiniteTimeout, cursor, PeekAction.Next);
Console.WriteLine(ret.Id);
} catch (MessageQueueException ex) {
// what can we do?
}
}
Thread.Sleep(1000);
}