【发布时间】:2012-01-24 09:40:16
【问题描述】:
情况如下:
我必须创建一个程序,将另一个进程的输出流输入到文本框中。它本身不会造成太大的问题。然而,事实上我必须运行这个控制台应用程序的 5 个实例并将输出重定向到 5 个文本框,并且能够随时终止这些进程中的任何一个。据我所知,最好的方法是异步。但是这里的问题是杀死进程,这些进程是在不同的线程上创建的。我如何在无法访问它的情况下杀死它,因为它不存在于我必须杀死它的范围内。我最好的猜测是在Process.Start() 上获取它的PID,这样我就可以杀死它,所以......
是否可以通过Process.kill() 命令从进程中触发任何事件?
如果没有 - 有没有办法在与 Process.Kill() 大致相同的时间间隔内杀死一个确实触发某种事件的进程?
或者也许有人可以建议我一些其他方法或最佳实践来解决这些问题通常如何解决?
编辑:我在不同线程上运行所有进程的原因是我在其中一些线程上使用Thread.Sleep(),如果有输入参数告诉我必须在 x 秒后终止进程。
【问题讨论】:
-
你说:“但这里的问题是杀死进程,这些进程是在不同的线程上创建的。”进程不是在不同的线程上创建的。一个过程就是一个过程。您是否混淆了进程和线程?
-
@PVitt 我认为他在谈论进程对象,所以最好的方法是存储一个静态列表,其中包含进程名称和进程 ID,您可以在其中获取进程 ID 并杀死它!
-
但是进程名称和 ID 甚至可以在启动信息上分配吗?操作系统不是分配这些的吗?由于我只运行同一进程的 5 个实例,因此进程名称也是相同的。
标签: c# .net multithreading events process