http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

楼主: 站长苏飞

[Winform] C#多线程解决界面卡死问题的完美解决方案,BeginInvoke而不是委托delegate

  [复制链接]
发表于 2014-2-19 14:16:34 | 显示全部楼层
楼主很强大,学习了!!


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2014-3-19 08:26:30 | 显示全部楼层
支持一下!
回复

使用道具 举报

发表于 2014-3-27 12:19:46 | 显示全部楼层
  Application.DoEvents();
用哪种委托都一样,这个还是要加的,不然照样会卡死的
发表于 2014-5-8 09:04:29 | 显示全部楼层
[C#] 纯文本查看 复制代码
   public Form1()
        {
            InitializeComponent();
        }
        //创建一个委托,是为访问TextBox控件服务的。
        public delegate void UpdateTxt(string msg);
        //定义一个委托变量
        public UpdateTxt updateTxt;

        Thread objThread;


        //修改TextBox值的方法。
        public void UpdateTxtMethod(string msg)
        {
            richTextBox1.AppendText(msg + "\r\n");
            richTextBox1.ScrollToCaret();
        }

        //此为在非创建线程中的调用方法,其实是使用TextBox的Invoke方法。
        public void ThreadMethodTxt(int n)
        {
            while (!this.IsHandleCreated)
            {
            }
            this.BeginInvoke(updateTxt, "线程开始执行,执行" + n + "次,每一秒执行一次");
            for (int i = 0; i < n; i++)
            {
                while (!this.IsHandleCreated)
                {

                }
                this.BeginInvoke(updateTxt, i.ToString());
                //一秒 执行一次
                Thread.Sleep(1000);
            }
            this.BeginInvoke(updateTxt, "线程结束");
        }
        //开启线程
        private void button1_Click(object sender, EventArgs e)
        {
            objThread = new Thread(new ThreadStart(delegate
             {
                 ThreadMethodTxt(Convert.ToInt32(textBox1.Text.Trim()));
             }));
            objThread.Start();
        }

        private void Form1_Load_1(object sender, EventArgs e)
        {
            //实例化委托
            updateTxt = new UpdateTxt(UpdateTxtMethod);
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            
            objThread.Abort(); 
        }
发表于 2014-5-13 15:55:56 | 显示全部楼层
2ms更新一次时,拖动窗口会偶尔卡死。
发表于 2014-5-15 09:48:27 | 显示全部楼层
这金钱上哪赚?
 楼主| 发表于 2014-5-15 09:50:17 | 显示全部楼层
wkpeng 发表于 2014-5-15 09:48
这金钱上哪赚?

每天登录,签到,发帖子发回复都会送的,你选择你的用户组的介绍的。
发表于 2014-5-21 19:01:12 | 显示全部楼层
这么好的贴子应该支持, 强烈支持楼主ing……论坛能有几个像飞哥这样的,新来的有福了!
发表于 2014-5-23 10:31:11 | 显示全部楼层
受教了,好东西,学习学习
发表于 2014-6-11 22:08:40 | 显示全部楼层
强烈支持楼主ing……线程操作,必须学习
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-22 17:07

© 2014-2021

快速回复 返回顶部 返回列表