C# 设计进程监视器Windows服务
我正在设计一个维护进程列表的Windows服务。它可以在它们上面运行任务。例如-停止特定进程(在其列表中)、重新启动特定进程、运行新进程并将其添加到列表中,等等 此Windows服务由web应用程序通过WCF服务控制-Windows服务运行WCF服务,web应用程序连接到该WCF服务。WCF服务导出方法,例如C# 设计进程监视器Windows服务,c#,multithreading,wcf,process,windows-services,C#,Multithreading,Wcf,Process,Windows Services,我正在设计一个维护进程列表的Windows服务。它可以在它们上面运行任务。例如-停止特定进程(在其列表中)、重新启动特定进程、运行新进程并将其添加到列表中,等等 此Windows服务由web应用程序通过WCF服务控制-Windows服务运行WCF服务,web应用程序连接到该WCF服务。WCF服务导出方法,例如重新启动(int-id)和停止(int-id) 我有几个问题: 当进程意外关闭时(例如,由于内部错误),服务应该更新某个数据库中的值。现在,要做到这一点,我只需要一个线程,它每30秒检查一
重新启动(int-id)
和停止(int-id)
我有几个问题:
- 当进程意外关闭时(例如,由于内部错误),服务应该更新某个数据库中的值。现在,要做到这一点,我只需要一个线程,它每30秒检查一次进程是否正在运行 这样做对吗?我应该使用退出事件吗
- 当服务因任何原因关闭时,其维护的所有流程也应关闭。正确的方法是什么
我在考虑在调用服务的
时,循环遍历列表并杀死所有进程。问题是,OnClose()
事件并不总是被调用。例如,如果服务意外关闭怎么办?它不会调用OnClose()
OnClose()
- 我应该如何表示每个任务(例如,重新启动流程或停止流程)
现在我正在使用
。这条路对吗System.Threading.Tasks
谢谢。在服务关闭时关闭流程,我认为以下步骤可以为您完成这项工作
希望这会有所帮助。听起来好像您正在重新发明Windows服务控制管理器?SCM的问题在于它不可扩展。在我的服务中,我也有自定义方法,不仅仅是“重启”和“停止”。然后简单地编写一个自定义应用程序。将这些消息发送到SCM托管进程。Windows服务支持此模型。