我正在设计一个维护进程列表的Windows服务。它可以在它们上运行任务。例如 - 停止特定进程(在其列表中),重新启动特定进程,运行新进程并将其添加到列表中等。
此Windows服务由Web应用程序控制,通过WCF服务 - Windows服务运行WCF服务,Web应用程序连接到该WCF服务。 WCF服务导出Restart(int id)
和Stop(int id)
等方法。
我有几个问题:
当进程意外关闭时(例如,由于内部错误),服务应更新某个数据库中的值。现在,要做到这一点,我只是有一个线程,它每30秒检查一次进程是否正在运行。
这是否有权这样做?我应该使用Exit
事件吗?
当服务关闭时,对于任何原因,它维护的进程的所有也将关闭。这样做的正确方法是什么?
我正在考虑循环遍历列表并在调用服务OnClose()
时终止所有进程。这样做的问题是并不总是调用OnClose()
事件。例如,如果服务意外关闭怎么办?它不会调用OnClose()
。
我应该如何表示每个任务(例如 - 重新启动流程或停止流程)?
现在我正在使用System.Threading.Tasks
。这是正确的方式吗?
此服务应具有高度可扩展性,并且错误最少。
感谢。
答案 0 :(得分:0)
为了在服务关闭时关闭流程,我认为以下步骤可以帮助您完成工作。
希望这会有所帮助。