0

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

应用程序在集中注意力时会消耗全部 CPU,并且在此过程中会逐渐变慢。

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

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

4

1 回答 1

0

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

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

不再挂起,应用程序响应。

于 2018-06-07T10:24:14.460 回答