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

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

查看: 23646|回复: 7

[其他] 在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke

[复制链接]
发表于 2013-6-20 02:30:24 | 显示全部楼层 |阅读模式
用的是这个源码:http://www.sufeinet.com/thread-3556-1-1.html 没做任何改动。。
在运行时一切正常,但是当线程正在运行时,关闭窗口就会出现“在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke” 这个错误,这是怎么回事啊?

QQ截图20130620022517.jpg


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2013-6-20 07:53:17 | 显示全部楼层
你强势关闭有很有可能出现这种情况的,因为委托的更新是导步的,说明你的线程还在执行,而你关闭了界面所以找不到要更新的控件啊。你要等更新完成之后才能关闭。或者是暂时停止线程然后关闭。
或者你处理一下异常,如果不存在控件就不更新就是了。
发表于 2013-6-20 07:54:13 | 显示全部楼层
另外再提示一下,使用线程是不能调试的,调试模式下是肯定会出错的,你的这个情况我相信不在调试模式下是不会出错的。
发表于 2013-6-20 08:38:50 | 显示全部楼层
顶一个
回复

使用道具 举报

发表于 2013-6-20 12:57:35 | 显示全部楼层
你的意思是,开启一个线程,去执行方法。。。。这个方法实现的时候,要用委托...要是我,我会这么写:

声明一个委托:
  private void DeterMineCall(MethodInvoker method)
        {
            if (InvokeRequired)
                Invoke(method);
            else
                method();
        }
下面的在你button1里执行:
Thread _td = new Thread(new ThreadStart(() => {
                DeterMineCall(() => {
               
                 updatetxt();
               
                });
            
            
            }));

不知道,你可是这个意思。。
发表于 2013-6-20 20:59:25 | 显示全部楼层
qw8613243 发表于 2013-6-20 12:57
你的意思是,开启一个线程,去执行方法。。。。这个方法实现的时候,要用委托...要是我,我会这么写:

声 ...

你测试下看看你的方法会不会卡
不要测试一两天,最少也得更新得上万条数据试试

发表于 2013-6-20 22:21:22 | 显示全部楼层
qw8613243 发表于 2013-6-20 12:57
你的意思是,开启一个线程,去执行方法。。。。这个方法实现的时候,要用委托...要是我,我会这么写:

声 ...

不会出现问题啊。。。我每次执行方法,就是一个线程。。。附上源码!简单测试而已,写的比较粗糙
1.jpg

WindowsFormsApplication1.rar

41.75 KB, 下载次数: 301, 下载积分: 金钱 -1

发表于 2015-5-10 13:37:30 | 显示全部楼层
运行的时候  点击退出依然有错误
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-5-17 11:31

© 2014-2021

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