这是我的目标的概述:
我有一个 Windows 服务,它将在启动时检查该服务器上的特定数据库是否有任何可用队列。如果找到一个队列,它必须开始处理(非常简单直接)。如果没有找到队列,我需要服务“休眠”15 分钟,然后“重新启动”。如果找到队列,则开始处理,否则再休眠 15 分钟并“重新启动”。
我该怎么做呢?我查看了 System.Threading.Sleep 方法,但显然这是非常糟糕的编码。我确实明白,让线程休眠会阻止任何连续的方法被执行,这很好——因为在休眠之后,服务将调用相同的方法来“重新启动”处理。
我还查看了 System.Threading.Timer,但有时系统会完全停止服务。事件查看器中有一些与某种异常有关的错误,但是当我手动启动服务时,它会自动开始处理队列——表明我的编码没有问题。
什么是暂停Service线程15分钟,然后再次调用处理方法的最佳方法。它应该保持在不断检查可用队列的循环中。一旦找到,就进行处理,如果没有找到就休眠 15 分钟?