方法Process.BeginOutputReadLine()在GUI的线程以外的线程上异步读取输出。我试图找到一种方法来使用异步并等待我的C#代码。
p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "mplayer.exe";
p.StartInfo.Arguments = @"C:\movie.mp4";
p.OutputDataReceived += P_OutputDataReceived;
p.Start();
有没有办法在Process类中使用异步方法进行更新?
答案 0 :(得分:1)
并非.net中的所有异步方法都可以立即与async和await一起使用。多年来,框架中引入了不同的异步模式。使用不同的模式实现了框架的不同部分。在这里查看不同模式的描述: https://msdn.microsoft.com/en-us/library/jj152938(v=vs.110).aspx
在您的情况下,接口实现为基于事件的异步模式(EAP),因为有一个事件处理程序和一个要启动的方法。
这里有一篇好文章:https://msdn.microsoft.com/en-us/library/hh873178(v=vs.110).aspx讨论了异步模式之间的互操作,并讨论了您正在寻找的内容。
但是,你不需要进入它,你可以使用p.StandardOutput.ReadAsync
这是一个等待的方法,它将读取OutputDataReceived
将读取的相同输出流。