关于Process的使用
控制台启动应用,并且执行完不关闭控制台
通过Process.Start启动的外部应用,一般执行完成后,都会自动关闭控制台窗口。
一些应用,执行完了以后,希望不要把窗口关闭,以便了解执行的情况,可以在通过"cmd /k 命令路径 命令参数"的方式启动。
示例代码如下:
var startInfo = new ProcessStartInfo
{
FileName = "cmd",
Arguments = $"/k python \"{tempFilePath}\"",
UseShellExecute = true,
CreateNoWindow = false
};
using var process = new Process { StartInfo = startInfo };
process.Start();
await process.WaitForExitAsync();
启动应用并获取应用的输出信息
var startInfo = new ProcessStartInfo
{
FileName = "python",
Arguments = $"\"{tempFilePath}\"",
RedirectStandardOutput = true,
RedirectStandardError = true,
UseShellExecute = false,
CreateNoWindow = true,
StandardOutputEncoding = Encoding.UTF8,
StandardErrorEncoding = Encoding.UTF8
};
startInfo.Environment["PYTHONIOENCODING"] = "utf-8";
using var process = new Process { StartInfo = startInfo };
process.OutputDataReceived += (sender, args) =>
{
if (args.Data != null)
{
Application.Current.Dispatcher.Invoke(() => Items.Add(args.Data));
}
};
process.ErrorDataReceived += (sender, args) =>
{
if (args.Data != null)
{
Application.Current.Dispatcher.Invoke(() => Items.Add($"Error: {args.Data}"));
}
};
process.Start();
process.BeginOutputReadLine();
process.BeginErrorReadLine();
await process.WaitForExitAsync();

浙公网安备 33010602011771号