【问题标题】:Close a child process from a windows service从 Windows 服务关闭子进程
【发布时间】:2011-07-25 07:59:44
【问题描述】:

我用 c# 编写了一个服务,它启动在后台运行的不同的其他(子)进程。如何以优雅的方式关闭进程? Process.kill() 不是一个选项,Process.CloseMainWindow() 不起作用,因为子进程没有可见窗口(也不应该有)。

坦克为您提供帮助。

【问题讨论】:

  • 欢迎来到 SO Nathon。子进程也用 C# 编写吗?
  • 子进程在完成进程后不会自行关闭吗?
  • 为什么父进程必须关闭它们?一旦完成执行,进程将干净地关闭。如果它还没有完成执行,我不相信有任何方法可以“干净地”关闭它。
  • 除非你走 IPC 路线,让你的父进程发出一个子进程应该退出的信号,然后让子进程优雅地退出。
  • 该进程是 wcf 网关的某种数据库,应该一直运行到用户想要结束它。我想到了一些可以在孩子身上调用的内置事件。像 CloseMainWindow()

标签: c# .net process windows-services


【解决方案1】:

如果您控制其他进程,您可以使用 WCF 在进程之间进行通信,子进程应该检查并询问服务是否是时候结束进程,然后子进程可以关闭并进行所需的清理。这是一个干净简单的例子

http://www.switchonthecode.com/tutorials/wcf-tutorial-basic-interprocess-communication

【讨论】:

    【解决方案2】:

    您可以使用 WMI 来执行此操作(如果可以的话)。看下面的例子:http://www.codeproject.com/KB/cs/EverythingInWmi02.aspx

    【讨论】:

    • 似乎只有一个 TerminateProcess 方法正在取消 kill() 以终止。
    猜你喜欢
    • 2013-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多