当前位置:编程学习 > C#/ASP.NET >>

多线程卡死 请大神帮忙 感激不尽

 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,界面都要刷新,不卡才怪。 --------------------编程问答-------------------- 回复等加分.祝贺楼主新春愉快! --------------------编程问答-------------------- 你这个做法,和不开线程没区别。 --------------------编程问答--------------------
引用 3 楼 Mackz 的回复:
你这个做法,和不开线程没区别。


嗯 嗯 对 难道像这样的就不能用新线程操作??还是有别的方法 ? --------------------编程问答-------------------- 看你上面不是用委托了么?

还有建议你用一楼说的方法 --------------------编程问答-------------------- 除了一楼的  就没有别的办法了?? --------------------编程问答-------------------- 我顶起来! --------------------编程问答-------------------- 如果你的需求是  “向窗体控件添加大量信息”,基本就是按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#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,