我正在开发一个每15分钟运行一次的Windows服务,并向iOS,Android和BlackBerry用户发送推送通知。这些特定于设备的操作中的每一个都将在Windows服务中的不同线程中运行。这一切都很好,但我们有可能需要一次发送多达50,000个推送通知。如果发生这种情况,可能需要15分钟以上,所以在下一个服务运行之前,我想知道上一个进程是否已经完成,如果没有,请等待并排队Windows服务以执行一旦先前的执行完成。我对线程方面很好,但我不知道实现上面描述的场景的正确方法。在C#中是否存在某种“等待”或“队列”机制?
答案 0 :(得分:1)
由于您的服务使用Timer
来安排工作,因此它可以在工作开始时始终禁用计时器,并在工作结束时根据需要重新计划。
这允许很多灵活性。如果一个工作队列花了超过15分钟,你可以决定是否延迟下一个,只是立即启动它(可能“永远”运行),完全跳过它或任何你需要的,因为计时器不会再运行直到它被重新启用。