我的程序在Process.WWaitForExit();处卡住;
本文关键字:程序 Process WWaitForExit 我的 | 更新日期: 2023-09-27 18:22:38
我的程序一直运行得很好,但它突然卡在Process.WaitForExit()上;而不进行下一个命令。我已经多次运行该程序而没有出现错误。有人知道我该如何调试吗?或者有人知道背后的问题是什么?可能是我的python.exe有问题吗?谢谢
public static void Process(string location)
{
int ExitCode;
ProcessStartInfo ProcessInfo;
Process Process;
ProcessInfo = new ProcessStartInfo();
ProcessInfo.FileName = location;
ProcessInfo.Arguments = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) +
"''parse.py " + Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "''cache.cell";
ProcessInfo.CreateNoWindow = true;
ProcessInfo.UseShellExecute = false;
ProcessInfo.RedirectStandardOutput = true;
ProcessInfo.RedirectStandardError = true;
Process = Process.Start(ProcessInfo);
// (...)
Process.WaitForExit();
string stderr = Process.StandardError.ReadToEnd();
string stdout = Process.StandardOutput.ReadToEnd();
//Console.WriteLine("STDERR: " + stderr);
//Console.WriteLine("STDOUT: " + stdout);
using (System.IO.StreamWriter file = new System.IO.StreamWriter(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "''test.txt"))
{
file.WriteLine(stdout);
}
在进程退出之前,程序不会打印任何内容。如果进程从未退出,您将永远看不到任何东西,并且问题将无法调试。
最好在上打印
var info = new ProcessStartInfo("msbuild")
{
UseShellExecute = false,
CreateNoWindow = true,
RedirectStandardError = true,
RedirectStandardOutput = true,
};
using (var p = Process.Start(info) )
{
p.ErrorDataReceived += (s, e) => Console.Error.WriteLine(e.Data);
p.OutputDataReceived += (s, e) => Console.WriteLine(e.Data);
p.BeginErrorReadLine();
p.BeginOutputReadLine();
p.WaitForExit();
}
请参阅如何保持msbuild输出的颜色?