【发布时间】:2012-04-20 19:10:35
【问题描述】:
我是编程新手。我有一个启动线程的表单应用程序。从那里启动了 4 个新线程。这些线程中的每一个都执行一系列命令行进程,如下所示:
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.WorkingDirectory ="C:\\BLA\\bin_windows";
startInfo.UseShellExecute = false;
startInfo.RedirectStandardOutput = true;
startInfo.CreateNoWindow = true;
startInfo.FileName = "SomeProcess"
Process p = Process.Start(startInfo);
p.WaitForExit();
当表单应用程序关闭时,它会中止第一个线程(不是 4 个单独的线程)。 现在我的问题是当我关闭表单时如何强制进程“p”退出? 我尝试了以下方法:
foreach (Process p in System.Diagnostics.Process.GetProcessesByName("SomeProcess"))
{
try
{
p.Kill();
p.WaitForExit(); // possibly with a timeout
}
catch
{ continue; }
}
但是,这种方法对我来说似乎有点残忍,而且并不总是很好用......有没有一种方法可以让我只识别我自己启动的进程然后终止它们? 任何建议都非常感谢。 谢谢
【问题讨论】:
-
拥有你启动的所有进程的某种全局列表怎么样?
-
@dwrd -- 听起来不错 -- 但我不知道该怎么做……你能解释更多吗?谢谢!
标签: c# multithreading process nested kill