【发布时间】:2019-12-11 00:25:19
【问题描述】:
我有一个包含多个选项卡的应用程序。这些选项卡之一是充当输出控制台的“报告”选项卡。当我第一次运行应用程序时,我读取了一个文件并将大约 2000 行写入文本框。当不是“报告”选项卡的选项卡处于活动状态时,这可以正常工作。
但是,如果我正在查看“报告”选项卡(带有文本框),而它正在写入大量数据,应用程序会写入一两行数据然后不会响应。整个应用程序崩溃。
我用来更新的代码很简单:
string timestamp = DateTime.Now.ToString("H:mm:ss");
string output = this.textbox_report_output.Text;
output += timestamp + ": " + message + "\n";
this.textbox_report_output.Text = output;
this.textbox_report_output.ScrollToEnd();
当 WPF 的文本框承受这种压力时,我的表现非常糟糕。有什么我可以做的吗?
【问题讨论】:
-
当你知道你要写大量的新行时,为什么不创建一个批量更新方法,在一个单独的线程上构建内存中的所有新行,然后将它们推送到一次真正的文本框?
-
作为输出控制台是什么意思?所以你在整个代码块上循环多次?
-
应用崩溃时抛出什么异常?我建议查看
AppendText方法。