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

zhengyingcan 2018-03-21 02:51:42
代码如下
availableUpdate = appUpdater.CheckForUpdate(serverXmlFile, localXmlFile, out htUpdateFile);
if (availableUpdate > 0)
{
this.Invoke(new EventHandler(delegate {
lvUpdateList.BeginUpdate();
for (int i = 0; i < htUpdateFile.Count; i++)
{
string[] fileArray = (string[])htUpdateFile[i];

lvUpdateList.Items.Add(new ListViewItem(fileArray));
}
lvUpdateList.EndUpdate();
}));
}

报错提示是 其他信息: 在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。
如下图
...全文
749 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
exception92 2018-03-22
  • 打赏
  • 举报
回复
或许代码抄了但是放错了地方,比如放在 InitializeComponent初始化方法之前。放在它之后或者#4说的Load事件中即可。
zhengyingcan 2018-03-22
  • 打赏
  • 举报
回复
引用 5 楼 duanzi_peng 的回复:
或许代码抄了但是放错了地方,比如放在 InitializeComponent初始化方法之前。放在它之后或者#4说的Load事件中即可。
我刚才确认了一遍 的确是在Load事件下面,我不得不放弃这个自动更新小程序了,去找人买一个吧,网上下载的,领悟不了
  • 打赏
  • 举报
回复
通常是调用这段代码的安排出了错误。比如说应该在 Form_Load 事件中来启动的事务,你给写到Form的实例化方法中,就会在窗体没初始化好之前调用了不该调用的 Invoke 了。
zhengyingcan 2018-03-21
  • 打赏
  • 举报
回复
我改成如下,是没有报错了,我也是抄别人的代码,别人源代码没有 if (this.IsHandleCreated) 也不会报错,我理解力太差了,根本 就不能 领悟。 if (availableUpdate > 0) { if (this.IsHandleCreated) { this.Invoke(new EventHandler(delegate { lvUpdateList.BeginUpdate(); for (int i = 0; i < htUpdateFile.Count; i++) { string[] fileArray = (string[])htUpdateFile[i]; lvUpdateList.Items.Add(new ListViewItem(fileArray)); } lvUpdateList.EndUpdate(); })); } }
大鱼> 2018-03-21
  • 打赏
  • 举报
回复
首先先需要判断句柄是否存在才能进行invoke操作,楼上说的是正解
正怒月神 版主 2018-03-21
  • 打赏
  • 举报
回复
先判断if (this.IsHandleCreated) 才能invoke
我将带领大家来系统学习Windows的窗口编程,包括消息、窗口、GDI绘图、游戏开发等。本课程比较基础,非常适合初学者入门,读者可以边学习边实践。具体的章节目录和课程内容如下所示:---------------------------------------------Windows游戏编程系列之1:GUI界面编程及游戏入门实战1、Windows创建第一个窗口 WinMain入口函数 5进行Windows编程的调试手法 6窗口从哪里来? 7窗口编程的步骤 7窗口编程需要的主要结构 8窗口编程需要的主要API 92、Windows的窗口过程与消息机制 如何留住窗口? 121)Windows的消息与消息循环 142)消息处理函数与常用消息 17)Windows的窗口过程函数 19 3、GDI编程之设备上下文 1)GDI的通用编程框架 222)GDI的绘图步骤 253)GDI获取设备句柄 254、GDI编程之绘制几何图形 画点、线 28颜色COLORREF 29矩形 29画圆、饼图、弦图 305、GDI编程之自定义画笔画刷画笔简介 32画刷简介 33画笔案例 33画刷案例 346、GDI编程之绘制文字 DrawText函数 35TextOut 函数 (wingdi.h) 36CreateFont函数 37绘制文本案例 377、GDI编程之绘制位图 位图简介 381)在资源中添加位图资源 392)从资源中加载位图: LoadBitmap 393)创建一个与当前DC相匹配的DC(内存DC) 394)将bitmap放入匹配的DC中:SelectObject 405)成像(1:1 比例 ) 406)取出位图 407)释放位图 418)释放匹配的DC 41绘制位图案例 41   8、Windows鼠标键盘消息 一、键盘消息 421、键盘消息 422、消息参数: 423、消息的使用: 424、键盘消息的案例代码 43二、鼠标消息 441、基本鼠标消息 442、双击消息 443、滚轮消息 454、不响应双击消息 45 9、Windows定时器消息 定时器消息介绍 47创建定时器 47关闭定时器 47定时器消息案例代码 4810、GDI游戏之跳舞动画 11、GDI游戏之走路动画 12、GDI贪吃蛇游戏实战  

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧