检查Process.Start终止

时间:2016-05-31 21:57:40

标签: c# wpf

因此,对于我最近的项目,我需要将A控制台应用程序生成的内容放在WPF textBox中。 关键是应用程序仅在进程完成后生成文本文件(test.txt),这可能需要一些时间。

以下是相同的代码:

foreach (var website in lst) //list can have several entries.
            {
                var args = "-v -all -text test.txt n" + website.ToString() + " 443";
                Process.Start(@"C:\TestSSLServer.exe", args);

                Task.Factory.StartNew(() =>
                {
                    MyValue = System.IO.File.ReadAllText(@"C:\test.txt");

                });
            }

如何确保仅在控制台应用TestSSLServer退出时填充文本框?

修改: Process.WaitForExit();不起作用。我试过了:(仍然抛出文件未找到异常。

感谢。

2 个答案:

答案 0 :(得分:0)

您可以使用Process.WaitForExit()来阻止该进程退出。

Process p = Process.Start(@"C:\TestSSLServer.exe", args);
p.WaitForExit();

我会注意到这会阻止它运行的任何线程。如果您希望在流程退出时通知,请使用Process.Exited事件。

答案 1 :(得分:0)

您需要将流程存储在Process类型的变量中。然后,您可以将其EnableRaisingEvents标志设置为true,并订阅该进程已结束的事件信号。您的处理程序应该是填充文本框的函数。

MSDN上提供了示例代码。 https://msdn.microsoft.com/en-us/library/system.diagnostics.process.exited(v=vs.110).aspx