Neb*_*ron 2 .net c# rest windows-services
我有一个只有两个方法的Windows服务 - 一个私有方法DoWork(),以及一个调用DoWork方法的公开方法.我想实现以下目标:
DoWork()每6小时运行一次DoWork()方法的公开方法.如果服务已在运行从服务DoWork()调用的方法,则在当前方法结束后将再次调用该服务.解决这个问题的最佳方法是什么?谢谢!
另一种方法是使用可由Windows任务调度程序调度的控制台应用程序,每6小时运行一次.在这种情况下,您不会浪费资源来保持Windows服务在整个时间内运行,而只在需要时消耗资源.
对于您的第二个问题:当您采用控制台应用程序方法时,您可以通过使用Process.Start来调用它.
如果应用程序的目的只是每六个小时运行一次特定任务,那么最好创建命令行应用程序并创建Windows自动运行的计划任务.显然,您可以手动启动此应用程序.
如果你仍然相信你需要一个服务(和说实话,从我迄今所看到的,它听起来就像你不这样做),你应该考虑使用一个计时器,但仔细选择你的计时器和阅读这篇文章,以更好地了解.NET内置的计时器(提示:密切关注System.Timers.Timer).
要防止重新进入,如果另一个方法在进程正在执行其操作时尝试调用DoWork(),请查看使用Mutex或Semaphore.
| 归档时间: |
|
| 查看次数: |
1240 次 |
| 最近记录: |