在控件的窗口句柄被创建之前,操作系统还没有为控件分配一个唯一的标识符,因此无法通过句柄与控件进行通信。Invoke和BeginInvoke方法依赖于控件的窗口句柄来跨线程调用,所以在句柄未创建之前调用这些方法会导致错误。 3. 描述正确的调用顺序或方法 正确的调用顺序应该是在控件的窗口句柄已经创建之后,再调用Invoke或BeginInvoke...
Control.BeginInvoke:在拥有此控件线程上异步执行委托,也就是可能并非顺序执行,这个有点熟悉,貌似说过了 最后说说解决方法: 在Invoke(...)之前加上1 this.components==null 2 this.IsDisposed 3 IsHandleCreated 来return 不执行invoke就可以,当然只是我针对自己遇到的解决的,可能并不适合其他的,但是总不会脱离其中 s...
1、控件还没完成初始化,就尝试调用控件,触发了该错误。解决方案为:增加一段代码,直到控件完成初始化,才触发事件。如: //防止在窗口句柄初始化之前就走到下面的代码 while (!this.IsHandleCreated) { ; } this.Invoke(new InitRunFunction(InitWindows)); 用这种方式解决时,发现this.IsHandleCreated的值一直为False...
Message=“在创建窗口句柄之前,无法在控件上调用Invoke或BeginInvoke。” Source=“System.Windows.Forms” StackTrace: at System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous) at System.Windows.Forms.Control.Invoke(Delegate method, Object[] args) at...
79-C# 在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke错误的解决办法 会出现这个错误的可能原因为: 窗体关闭了,但还有线程没执行完,且该线程有在操作窗体的内容: if (_lik启动任务.IsHandleCreated) { _lik启动任务.Invoke(new Action(() =>...
c#在创建窗口句柄之前,不能在控件上调用Invoke或BeginInvoke。 Form_mainfrm=newForm_main(); frm.Invoke(newMethodInvoker(delegate() { //dosomething... frm.imageList1.Images.Add(text,ico); ListViewItemitem=newListViewItem(111,text); frm.listView1.Items.Add(item); ...
错误:System.InvalidOperationException:“在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。” 报错代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.Linq; using System.Text; using Syste...
class1的构造函数还没完成,也就是一个class1得实例还没创建完成,你就调用该实例(this)的成员,当然不行.就像一个窗口里面的控件还没创建出来,你就是用控件的方法,当然不可以的.看看能不能把start()放在form1_load事件里
你可以用 try { } catch(){ } 这个很常见的,尤其是多线程操作时,有时候窗体关闭了,可是线程没运行完,也会出这个问题,还好这样的操作基本都是些用户显示,报告什么的,没有实质的数据操作
在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke 解决 在Window窗体程序开发的时候,如果使用多线程编程,在子线程中访问主线程窗体内的控件,就需要使用控件的Control.Invoke方法或者BeginInvoke方法。但是有时候因为Window执行速度太快,尤其是你写代码的时候在InitializeComponent();完成之前起了一个线程去执行某些...