设计进程监视器Windows服务

Alo*_*kin 5 c# wcf multithreading windows-services process

我正在设计一个维护进程列表的Windows服务.它可以在它们上运行任务.例如 - 停止特定进程(在其列表中),重新启动特定进程,运行新进程并将其添加到列表中等.

此Windows服务由Web应用程序通过WCF服务控制--Windows服务运行WCF服务,Web应用程序连接到该WCF服务.WCF服务导出诸如Restart(int id)和的方法Stop(int id).

我有几个问题:

  • 当进程意外关闭时(例如,由于内部错误),服务应更新某个数据库中的值.现在,要做到这一点,我只是有一个线程,它每30秒检查一次进程是否正在运行.

    这是否有权这样做?我应该使用这个Exit活动吗?

  • 当服务因任何原因关闭时,它维护的所有进程也将关闭.这样做的正确方法是什么?

    我正在考虑循环遍历列表并在OnClose()调用服务时终止所有进程.这个问题OnClose()是并不总是调用事件.例如,如果服务意外关闭怎么办?它不会打电话OnClose().

  • 我应该如何表示每个任务(例如 - 重新启动进程或停止进程)?

    现在我正在使用System.Threading.Tasks.这是正确的方法吗?

此服务应具有高度可扩展性,并且错误最少.

谢谢.

小智 0

为了在服务关闭时关闭进程,我认为以下步骤可以为您完成这项工作。

  1. 编写一个小程序,可以关闭您想要关闭的进程。
  2. 转到服务控制管理器并右键单击您的服务。
  3. 转至“恢复”选项卡,并在“第一次失败”、“第二次失败”和“后续失败”列表框中指定要执行的程序。

希望这会有所帮助。