我正在尝试运行一个维护任务。为此,我想在应用程序启动时推送一条消息。当实际的处理程序运行时,它完成它的工作,并推迟一天后再次执行。如果此消息已经在队列中,我不想发布它。有办法窥探队列吗?我使用的是SQL传输,所以我尝试简单地查询数据库。但是,该表已锁定,无法读取。另一件需要考虑的事情是,至少有两台机器在运行同一个应用程序。这就是我提出这种解决方案的原因,因为我想避免并发问题。
在我看来,这听起来像是在使用消息队列作为调度程序。
如果我是你,我会使用一个简单的后台计时器(例如System.Timers.Timer
(定期向自己发送消息,然后你就可以在消息处理程序中完成你的工作。
如果您的日程安排要求更为复杂,那么看看Quartz.NET.之类的东西可能会有所帮助