Winform应用程序使用异步更新的TextBox在最小化

时间:2018-06-07 10:24:14

标签: visual-studio textbox appendtext

C#Winform Visual Studio应用程序在使用几个小时后挂起“无响应”,Windows弹出窗口显示正在关闭应用程序。这通常发生在将远程桌面启动到计算机或在最小化后使应用程序窗口聚焦时。

应用程序在关注时会占用全部CPU,并且在此过程中会逐渐变慢。

Windows窗体是多线程GUI,用于通过RS232控制设备。它每秒几次使用文本框进行调试输出。使用异步方法写入文本框。

void asyncAppendTextBox(TextBox tb, string str) { if (IsHandleCreated) { tb.BeginInvoke( new Action(() => { tb.AppendText(str + appLifetimeSW.ElapsedMilliseconds.ToString()); } )); } }

1 个答案:

答案 0 :(得分:0)

这个问题的答案最后相当简单。文本框只是变得过于充满了文本,并且在重新聚焦时最终需要花费几分钟来重新绘制所有内容。起初我没想到,因为文本框没有使用AppendText()函数绘制问题。程序运行几个小时后,文本数量实际上似乎挂起了应用程序(根据Windows)。

简单的解决方法是写入字符串数组,并通过异步调用方法中的'Textbox.SetText(string [])'在文本框中设置文本。 我另外将数组移动一个并写入数组的最后一个元素以匹配AppendText()的外观。

没有更多的悬挂和应用程序响应。