因此,对于我最近的项目,我需要将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();
不起作用。我试过了:(仍然抛出文件未找到异常。
感谢。
答案 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