因此,对于我最近的项目,我需要将控制台应用生成的内容放在 WPF 文本框中。关键是应用程序仅在流程完成后生成文本文件(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();
不起作用。我试过了:(仍然抛出文件未找到异常。
谢谢。
Process.WaitForExit()
阻止,直到进程退出。
Process p = Process.Start(@"C:TestSSLServer.exe", args);
p.WaitForExit();
我会注意到这将阻止它运行的任何线程。 如果您希望在进程退出时收到通知,请使用 Process.Exited
事件。
您需要将流程存储在 Process 类型的变量中。然后,您可以将其 EnableRaisingEvents 标志设置为 true,并订阅进程已结束的事件信号。您的处理程序应该是填充文本框的函数。
示例代码可在 MSDN 上找到。https://msdn.microsoft.com/en-us/library/system.diagnostics.process.exited(v=vs.110).aspx