热爱生活
既然选择了远方,便只顾风雨兼程。

      在Window窗体程序开发的时候,如果使用多线程编程,在子线程中访问主线程窗体内的控件,就需要使用控件的Control.Invoke方法或者BeginInvoke方法。但是有时候因为Window执行速度太快,尤其是你写代码的时候在InitializeComponent();完成之前起了一个线程去执行某些操作,涉及到窗体控件的,当你在调用
Control.Invoke的时候,就可能出现 “在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke”错误。

 

     解决的办法就是让线程等待,直到窗口句柄创建完毕:

               //防止在窗口句柄初始化之前就走到下面的代码
                while (!this.IsHandleCreated)
                {
                    ;
                }
                this.Invoke(new InitRunFunction(InitWindows));

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/beelinkerlidejun/archive/2009/10/11/4617139.aspx

posted on 2012-08-09 21:25  阿远  阅读(338)  评论(0编辑  收藏  举报