繁体   English   中英

设计过程监视器 Windows 服务

[英]Designing a Process Monitor Windows Service

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

This Windows Service is controlled by a web app, through a WCF service - the Windows Service runs a WCF service, and the web app connects to that WCF service. WCF 服务导出Restart(int id)Stop(int id)等方法。

我有几个问题:

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

    这是这样做的权利吗? 我应该使用Exit事件吗?

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

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

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

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

该服务应该是高度可扩展的,并且错误最少。

谢谢。

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

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

希望这会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM