关于使用委托在新开的线程中改变原窗体控件属性的问题 本帖最后由 bpl199015 于 2011-09-18 16:17:49 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 解决方法是创建窗口句柄。Windows表单类库内部使用窗口来进行线程间同步。在Window窗体程序开发的时候,如果使用多线程编程,在子线程中访问主线程窗体内的控件,就需要使用控件的Control.Invoke方法或者BeginInvoke方法。但是有时候因为Window执行速度太快,尤其是你写代码的时候在InitializeComponent();完成之前起了一个线程去执行某些操作,涉及到窗体控件的,当你在调用Control.Invoke的时候,就可能出现 “在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke”错误。解决的办法就是让线程等待,直到窗口句柄创建完毕: //防止在窗口句柄初始化之前就走到下面的代码 while (!this.IsHandleCreated) { ; } this.Invoke(new InitRunFunction(InitWindows)); 如何删除字符串的部分字符 DirectInput如何设置成独享键盘模式(50分) 请问 这个 分数 在哪里可以看到 调试出现错误,为何? 各位大哥大姐:我要把后一个页面的DataGrid里的某行双击后,把它的ID号显示在前一个页面的textbox里,我应该怎么做啊?急!!谢谢各位啊!!! 关于word全文对比 问一个关于过大数据包发送的问题,希望高手指教,谢谢! 怎样将连续抓拍的图片压缩成视频 谁能给我解释清楚什么是托管? 我给100分 怎么看都觉得“#”是四个“+”拼起来的。 如何注销快捷键,如何注销快捷键? C#怎样让用户注册
在Window窗体程序开发的时候,如果使用多线程编程,在子线程中访问主线程窗体内的控件,就需要使用控件的Control.Invoke方法或者BeginInvoke方法。但是有时候因为Window执行速度太快,尤其是你写代码的时候在InitializeComponent();完成之前起了一个线程去执行某些操作,涉及到窗体控件的,当你在调用
Control.Invoke的时候,就可能出现 “在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke”错误。解决的办法就是让线程等待,直到窗口句柄创建完毕: //防止在窗口句柄初始化之前就走到下面的代码
while (!this.IsHandleCreated)
{
;
}
this.Invoke(new InitRunFunction(InitWindows));