设计进程监视器Windows服务

时间:2011-07-02 01:20:44

标签: c# multithreading wcf process windows-services

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

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

我有几个问题:

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

    这是否有权这样做?我应该使用Exit事件吗?

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

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

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

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

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

感谢。

1 个答案:

答案 0 :(得分:0)

为了在服务关闭时关闭流程,我认为以下步骤可以帮助您完成工作。

  1. 编写一个可以关闭要关闭的进程的小程序。
  2. 转到服务控制管理中心并右键单击您的服务。
  3. 转到“恢复”选项卡,并在“首次失败,第二次失败和子请求失败”列表框中指定要执行的程序。
  4. 希望这会有所帮助。