多线程卡死 请大神帮忙 感激不尽
C# 新建线程 然后再新线程中 invoke或begininvoke 向 窗体控件添加大量信息 时窗体 卡死不能进行任何操作 直到 向控件中添加信息完毕 才能移动操作窗体新建线程代码如下:
public delegate void tt(string T);
public override void run()
{
gethtml href = new gethtml(temp ); //href 枚举器
foreach (string T in href)
{
x.beginInvoke(new tt(ww),T);// x 为窗体对象
}
}
private void ww(string T)
{
x.textBox1.AppendText(T + "\n");
x.textBox1.AppendText("\n");
} --------------------编程问答-------------------- 你应该先往StringBuilder里添加大量信息,最后一次性添加到TextBox里,否则每次更改TextBox,界面都要刷新,不卡才怪。 --------------------编程问答-------------------- 回复等加分.祝贺楼主新春愉快! --------------------编程问答-------------------- 你这个做法,和不开线程没区别。 --------------------编程问答--------------------
嗯 嗯 对 难道像这样的就不能用新线程操作??还是有别的方法 ? --------------------编程问答-------------------- 看你上面不是用委托了么?
还有建议你用一楼说的方法 --------------------编程问答-------------------- 除了一楼的 就没有别的办法了?? --------------------编程问答-------------------- 我顶起来! --------------------编程问答-------------------- 如果你的需求是 “向窗体控件添加大量信息”,基本就是按1楼处理,你现在做的是
“大量向窗体控件添加信息”,肯定卡死了 --------------------编程问答-------------------- 试试介个。。。
Application.DoEvents()--------------------编程问答-------------------- 既然是多线程,就不会有卡死的情况。
说明你的调用没有用到合适的位置。
=======================================================
.NET快速开发整合框架(RDIFramework.NET),基于.NET的快速开发、整合框架,给用户和开发者最佳的.Net框架部署方案。
平台博客:[CNBLOGS]http://www.cnblogs.com/huyong
[CSDN]http://blog.csdn.net/chinahuyong
交流QQ:406590790 (请注明:CSDN)
平台微博:http://t.qq.com/yonghu86
邮件交流:406590790@qq.com
--------------------编程问答--------------------
Public void Invorks(){
gethtml href = new gethtml(temp ); //href 枚举器
foreach (string T in href)
{
This.Invork((MethodInvorker)delegate(){
x.beginInvoke(new tt(ww),T);
});
}
}
}
//调用
Thread thread=new Thread(Invorks);
Thread.start(); --------------------编程问答--------------------
补充:.NET技术 , C#