











通过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();
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。