我知道我们可以使用Process.Start
静态方法来创建独立的进程,但我面临的问题是,每当我关闭我的原始程序时,它最终都会关闭我创建的进程。
我检查了任务管理器/进程资源管理器,发现该进程仍在层次结构中。所以我尝试使用 cmd.exe 调用它(就像一个中间进程),这最终使我的目标程序从进程树中分离出来。但是关闭行为根本没有改变。
我尝试使用两者Application.Current.Shutdown
以及this.Close()
在程序中关闭我的原始文件,但两者都有相同的行为。似乎我的应用程序正在跟踪所有产生的进程,但我没有写任何类似的东西,并在关闭时将它们杀死。
知道为什么会这样吗?我正在为单击按钮的事件处理程序方法中创建进程,这可能是原因吗?它可以用 Process 类修复还是我需要使用一些较低级别的东西?
用于进程创建的代码:
try
{
ProcessStartInfo rn = new ProcessStartInfo();
rn.CreateNoWindow = false;
rn.UseShellExecute = true;
rn.FileName = "cmd.exe";
rn.Arguments = String.Format(" /C start {0} -t:{1} {2}", ExeFile, Pass, User);
rn.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(rn);
}
catch(Exception ec)
{
MessageBox.Show(String.Format("Unable to Start Client: {0}", ec.Message), "Error Starting Client", MessageBoxButton.OK, MessageBoxImage.Error);
}
Application.Current.Shutdown();