我正在C#中创建Winform服务器管理器应用程序(与steamcmd一起使用),我想将steamcmd输出重定向到richtextbox或textbox,这样就没有“创建”额外的窗口,而且我仍然可以看到内部发生了什么应用程序。
问题是im使用的代码非常适合本机cmd命令,例如ping -t www.google.com。它实时地逐行输出行,但是当使用steamcmd时,它仅输出直到特定点(即使那样,它也不会显示所有内容)。但是,如果我在cmd中运行完全相同的命令,它将显示出Steamcmd中正在发生的一切。
如果我关闭控制台应用程序(在哪里进行即时通讯测试),它会在关闭之前显示所有内容,但在正常运行时不会显示所有内容。
以下是示例 (在这种情况下,将强制在我的服务器上进行更新)
这是运行时输出的内容(完成后会显示整个输出,但对于特定情况不是实时显示的):http://prntscr.com/ndyr8a
这是我强制关闭它时显示的内容(这是它应该实时输出的内容,但是,它只是将丢失的所有内容都添加了,而且显然没有以正确的顺序显示):http://prntscr.com/ndyrnv >
这是实时显示的内容:http://prntscr.com/ndysml
如何更改我的代码以实时正确显示? 预先谢谢你
var process = new Process();
var startinfo = new ProcessStartInfo("cmd.exe", @"/C " + Path + steamcmd_arguments);
startinfo.RedirectStandardOutput = true;
startinfo.UseShellExecute = false;
process.StartInfo = startinfo;
process.OutputDataReceived += (s, e) => Console.WriteLine(e.Data);
process.Start();
process.BeginOutputReadLine();
process.WaitForExit();