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-11-28 13:12:11 | 显示全部楼层
以前此问题也一直困扰着我


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2015-1-9 11:37:26 | 显示全部楼层
路过,顺便说一句,Invoke 和BeginInvoke的本质同步和异步的区别,适应于不同场景。
Delegate.Invoke: Executes synchronously, on the same thread.
Delegate.BeginInvoke: Executes asynchronously, on a threadpool thread.
Control.Invoke: Executes on the UI thread, but calling thread waits for completion before continuing.
Control.BeginInvoke: Executes on the UI thread, and calling thread doesn't wait for completion.
发表于 2015-1-25 00:25:50 | 显示全部楼层
这个方法用在dataGridView中貌似不行哦。还是一样的卡死界面,只能等到数据全部处理完才能不卡。
 楼主| 发表于 2015-1-25 08:33:55 | 显示全部楼层
我是MT 发表于 2015-1-25 00:25
这个方法用在dataGridView中貌似不行哦。还是一样的卡死界面,只能等到数据全部处理完才能不卡。

我这边没有这种情况,是不是和你的代码有关系
发表于 2015-1-26 17:51:00 | 显示全部楼层
如果是post获取网页信息的时候,界面卡死了怎么解决呢。
发表于 2015-2-12 14:58:41 | 显示全部楼层
收藏了,过年时候好好学一下C#
发表于 2015-3-12 11:52:45 | 显示全部楼层
如果提前关闭窗口,则出错:在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。
 楼主| 发表于 2015-3-13 08:27:49 | 显示全部楼层
龍游天下 发表于 2015-3-12 11:52
如果提前关闭窗口,则出错:在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。

处理下异常,这是因为还有数据没有更新的原因,或者是线程没有结束就先关闭了应用程序
发表于 2015-4-11 17:02:56 | 显示全部楼层
强烈支持楼主ing……
发表于 2015-7-22 21:11:56 | 显示全部楼层
其实我喜欢在多线程的时候对主线程窗体的控件这样赋值  懒得写委托 要是有十个组件是个蛋疼的事
     
this.Invoke(new Action(() =>
                   {
                      textbox.Text="更新了";
                   }));
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-4-18 19:39

© 2014-2021

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