gpt4 book ai didi

c# - 如何在不降低应用程序速度的情况下将冗长的控制台重定向到 C# 中的 TextBox

转载 作者:行者123 更新时间:2023-11-30 17:55:51 24 4
gpt4 key购买 nike

我正在使用以下设置将我的控制台重定向到 TextBox:

public partial class WindowMain : Window
{
public WindowMain()
{
InitializeComponent();
TextWriter writer = new TextBoxStreamWriter(consoleTextBox);
Console.SetOut(writer);
}
}

使用类 TextBoxStreamWriter :

public class TextBoxStreamWriter : TextWriter
{
TextBox _output = null;

public TextBoxStreamWriter(TextBox output)
{
_output = output;
}

public override void Write(char value)
{
base.Write(value);
_output.Dispatcher.Invoke(new Action(() =>
{
_output.AppendText(value.ToString());
})
);
}
}

这是有效的。当我在我的应用程序中调用 Console.Write 时,我的 TextBox 被正确附加。问题是我不断地向控制台提供非常大的数据(通过调用 cmd.exeProcess 启动的非常详细的批处理的输出)

process.OutputDataReceived += (s, e) =>
{
if (e.Data != null)
{
Console.WriteLine(e.Data);
}
};

这里的问题是这会减慢整个应用程序的速度(尤其是我在馈送期间启动的线程)。我的想法是手动控制写入的频率。但是我觉得这是一个普遍的问题,我不想重新发明轮子。有什么建议吗?

最佳答案

我最终不再使用控制台了。我的应用程序确实不需要控制台。

process.OutputDataReceived += (s, e) =>
{
if (e.Data != null)
{
consoleTextBox.AppendText(e.Data);
}
};

我的解决方案比上面的代码更复杂,因为我使用了线程(这首先让我感到困惑,让我觉得使用控制台很聪明)。

关于c# - 如何在不降低应用程序速度的情况下将冗长的控制台重定向到 C# 中的 TextBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14707386/

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