如何在C#中始终运行进程的新实例?

时间:2015-10-08 01:21:46

标签: c# process

基于此https://msdn.microsoft.com/en-us/library/53ezey2s(v=vs.110).aspx Process.Start()没用。

  

Start可以返回具有HasExited属性的非null进程   已经设置为true。在这种情况下,启动过程可能有   激活现有的自身实例,然后退出。

在我的情况下,我想在新实例中为xml启动默认编辑器,以便我可以使用Process.HasExited属性对我的WPF应用程序执行操作。我所看到的只是原生样本或比想象的复杂。什么是最好的解决方案?

Process process = Process.Start(MyFileXMlPath);
//Wait for the Editor to be closed.
if (process != null) 
    while (!process.HasExited) ;

这就是我现在所拥有的。所以我使用了用户的首选编辑器。

1 个答案:

答案 0 :(得分:1)

正在发生的是预期的行为 - 编辑器被要求打开一个文件,它正在现有的运行过程中打开该文件。一种解决方案可能是使用Process.GetProcesses来获取框中的所有正在运行的进程并迭代它们以找到新进程,但这可能有问题,因为实际上没有好的方法来判断哪个打开了文件。

您可能要做的是将UseShellExecute设置为false,运行您想要的编辑器(例如@“c:\ Windows \ notepad.exe”)并将文件名作为参数传递,这通常是约定打开一个文件。显然,你想要选择一个不调用现有实例的编辑器。