我使用以下代码在命令提示符中启动外部程序:
private void GenerateTiff(String fileName) {
bool success = true;
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += delegate
{
try
{
String cmd = @"./lib/gswin32c";
String args = "-dNOPAUSE -sDEVICE=pngalpha -r300 -dBATCH -dSAFER -sOutputFile=" + fileName + "-%03d" + FILEEXTENSION + " " + fileName + ".pdf";
Process proc = new Process();
proc.StartInfo.FileName = cmd;
proc.StartInfo.Arguments = args;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.UseShellExecute = false;
proc.Start();
}
catch (Exception e)
{
success = false;
}
};
worker.RunWorkerCompleted += delegate
{
string file = fileName + "-001.jpg";
if (success) {
DisplayImage.Visibility = System.Windows.Visibility.Visible;
DisplayImage.Tag = fileName;
}
};
worker.RunWorkerAsync();
}
现在我想阅读命令提示符的日志。我怎么能这样做?
答案 0 :(得分:2)
查看Process.StandardOutput属性。它为您提供了一个StreamReader,可用于读取命令的输出。
请务必阅读文档,因为有一些需要注意的条件,例如:
要使用StandardOutput,必须将ProcessStartInfo.UseShellExecute设置为false,并且必须将ProcessStartInfo.RedirectStandardOutput设置为true。否则,从StandardOutput流中读取会引发异常。
如果外部程序写入stderr而不是stdout,请改用Process.StandardError。