我正在设计一个维护进程列表的Windows服务。它可以在其上运行任务。例如,停止特定进程(在其列表中),重新启动特定进程,运行新进程并将其添加到列表中等。设计进程监视器Windows服务
此Windows服务由Web应用程序通过WCF服务控制 - Windows服务运行WCF服务,并且该Web应用程序连接到该WCF服务。 WCF服务导出方法,如Restart(int id)
和Stop(int id)
。
我有几个问题:
当一个进程意外关闭(例如,由于内部错误),服务应该更新的数据库的价值。现在,要做到这一点,我只需要一个线程,每30秒检查一次流程是否正在运行。
这是正确的吗?我应该使用
Exit
事件吗?当服务关闭,为任何原因,所有它应保持太近过程。什么是正确的方法来做到这一点?
我正在考虑循环访问列表,并在调用服务的
OnClose()
时终止所有进程。问题在于OnClose()
事件并不总是被调用。例如,如果服务意外关闭会怎样?它不会拨打OnClose()
。我该如何表示每个任务(例如 - 重新启动进程或停止进程)?
现在我正在使用
System.Threading.Tasks
。这是正确的方式吗?
该服务应该具有高度可扩展性,并且错误率最低。
谢谢。
听起来好像您正在重新创建Windows服务控制管理器? –
单片机的问题在于它不可扩展。在我的服务中,我也有自定义的方法,不仅是'重新启动'和'停止'。 –
然后只需编写一个自定义应用程序。将这些消息发送给SCM托管进程。 Windows服务支持这种模式。 –