我在C#Windows服务中具有以下要求。
[当任何客户端调用该服务时,该服务应该能够返回线程执行的状态。
我知道C#具有实现定期线程执行的不同机制。计时器,带有睡眠的线程,事件eventwaithandle等。我试图了解哪种线程机制或设计模式最适合此要求?
最简单的解决方案是以Task Method()
样式定义调度的逻辑,并使用Task.Run()
执行它们,而在主线程中,只需等待使用Task.WaitAny()
完成执行即可。如果任务完成,则可以再次调用Task.WaitAny
,但是要传递Task.Delay(timeUntilNextSchedule)
而不是完成的任务。这样,任务就不会阻塞主线程,并且可以避免为了等待而旋转CPU。通常,您可以避免直接在现代.NET中进行管理]
取决于其他要求,例如标准化错误处理,监视功能,这些计划任务的管理,您还可以依赖更强大的解决方案,例如HangFire。