gpt4 book ai didi

c# - 我的程序停留在 Process.WaitForExit();

转载 作者:太空宇宙 更新时间:2023-11-03 13:39:22 41 4
gpt4 key购买 nike

我的程序一直运行良好,但突然卡在 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();
}

参见 How to keeps colours from msbuild output?

关于c# - 我的程序停留在 Process.WaitForExit();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17674528/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com