我知道我们可以使用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();
答案 0 :(得分:0)
检查命令“cmd.exe / C start ExeFile -t:pass user”是否正常工作。 我想,ExeFile崩溃了。