我目前有一个后台线程,在这个线程中有一个无限循环。
这个循环会不时地更新数据库中的一些值,并在MessageQueue上监听1秒钟(使用queue.Receive(TimeSpan.FromSeconds(1))
)。
只要没有消息进来,该调用就会内部抛出MessageQueueException(超时),然后被捕获并继续循环。如果有消息,该调用通常会返回并处理该消息,之后循环继续。
这导致了大量的First chance exceptions(每秒钟一次,除非有消息要处理),这会垃圾邮件调试输出,并且在我忘记排除MessageQueueExceptions时也会在调试器中断点。
因此,如何正确处理MessageQueue的异步处理,同时确保只要我的应用程序运行,队列就受到监视,并且数据库也会不时更新。当然,这里的线程不应占用100%的CPU。
我只需要大局观或一些正确完成的异步处理提示。