因此,在我最近的项目中,我需要将由控制台应用程序生成的内容放在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();不工作。我试过了:(仍然抛出文件找不到异常。
谢谢。
发布于 2016-05-31 22:01:40
您可以使用Process.WaitForExit()进行阻塞,直到进程退出为止。
Process p = Process.Start(@"C:\TestSSLServer.exe", args);
p.WaitForExit();我要注意的是,这将阻止它运行的任何线程。如果您希望在进程退出时得到通知,请使用Process.Exited事件。
发布于 2016-05-31 22:02:40
您需要将进程存储在一个类型为Process的变量中。然后,您可以将它的EnableRaisingEvents标志设置为true,并订阅表示进程已经结束的事件。您的处理程序应该是填充文本框的函数。
示例代码可在MSDN上使用。https://msdn.microsoft.com/en-us/library/system.diagnostics.process.exited(v=vs.110).aspx
https://stackoverflow.com/questions/37556294
复制相似问题