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 被正确附加。问题是我不断地向控制台提供非常大的数据(通过Process
调用启动的非常详细的批处理的输出cmd.exe
)
process.OutputDataReceived += (s, e) =>
{
if (e.Data != null)
{
Console.WriteLine(e.Data);
}
};
这里的问题是这会减慢整个应用程序的速度(特别是我在馈送期间启动的线程)。我的想法是手动控制写作频率。但是我觉得这是一个普遍的问题,我不想重新发明轮子。有什么建议么 ?