首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用户界面变得很慢,甚至在长时间运行时崩溃

用户界面变得很慢,甚至在长时间运行时崩溃
EN

Stack Overflow用户
提问于 2012-10-29 10:27:21
回答 1查看 311关注 0票数 0

我使用的是.Net 4.0和VS2010。

我的程序只是一个多线程的get请求发送器,它通过DataGridView更新bindingList并显示列表。datagridview处于虚拟模式。此外,我制作了一个文本框和状态栏来显示请求的状态,一个请求通常会在文本框中添加4-5行,并更改状态栏中的数字。

工作负载保持不变,每两秒一个请求。请求速度很快,大多数时候只有一个请求很突出。新的请求线程由最后一个旧的请求线程调用。UI在每个线程中使用begininvoke和delegate更新几次。

代码语言:javascript
复制
MyInvoke mi = new MyInvoke(change);
this.BeginInvoke(mi, new Object[] { true, "Row " + pos + " standing by...", (pos + 1),0 });

开始时,我在datagridview上显示了整个3000个请求,内存使用量为30MB。当达到内存使用量为4XMB的2XXX请求时,我可以看到状态栏编号和文本框的更新越来越慢。例如,2000->2001->2002->2003变成了2000->2003。

如果我选择应用程序窗口,有时整个UI甚至会冻结。我的datagridview使用虚拟模式固定在几行上。我认为这是UI线程的问题。当它冻结时,我可以等待,直到所有请求都完成,一切又变得顺利。

对正在发生的事情有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-31 15:47:47

最后,我找到了为什么它这么慢的原因。像我这样的菜鸟很容易犯这样的错误。我在线程期间使用的大量begininvoke确实会产生影响,但不足以冻结UI线程。

繁重的工作负载主要由下面的代码购买,这些代码每次都会将整个文本分配给文本框

代码语言:javascript
复制
 textbox1.Text += "string"

下面的代码可以解决这个问题

代码语言:javascript
复制
textbox1.AppendText("string")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13115181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档