首页 新闻 搜索 专区 学院

关于在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke

-1
[待解决问题]

我在一个异步的方法中使用了DevExpress的WaitDialogForm做为数据加载界面

可有时候加载树数据的时候有时候就在

  WaitBeforeLogin.Invoke((EventHandler)delegate { WaitBeforeLogin.Close(); WaitBeforeLogin.Dispose(); }); 这句话中报“关于在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke ”错误,有时候是正常的!求解决办法。。有大神遇到过这种情况没
   void worker_DoWork(object sender, DoWorkEventArgs e)
        {

                WaitDialogForm WaitBeforeLogin = null;
                //弹出提示画面  
                new Thread((ThreadStart)delegate
                {
                    WaitBeforeLogin = new DevExpress.Utils.WaitDialogForm("请稍候...", "正在加载节点数据信息");
                    Application.Run(WaitBeforeLogin);
                }).Start();


                    e.Result = GetTreeTable(this.PCode, this.IsNew, this.Process, true);
              
                while (WaitBeforeLogin == null)
                { 
                }
                while (!WaitBeforeLogin.IsHandleCreated)
                {

                }
          
                //关闭提示画面  
         
                    WaitBeforeLogin.Invoke((EventHandler)delegate { WaitBeforeLogin.Close(); WaitBeforeLogin.Dispose(); });
     
        }


飞蛾扑火的主页 飞蛾扑火 | 初学一级 | 园豆:145
提问于:2013-04-19 14:10
< >
分享
所有回答(2)
0

这个东西我帮你在winform下测试下(非DevExpress窗体)是正常运行的....

滴答的雨 | 园豆:3690 (老鸟四级) | 2013-04-19 15:42

我在频繁测试的时候大部分是正常的,有时候会出现错误!出错几率比较小,可怎么避免这种错误呢?

支持(0) 反对(0) 飞蛾扑火 | 园豆:145 (初学一级) | 2013-04-19 18:22
0

Form.IsHandleCreated

都有这个属性的,使用之前,用这个判断.

三阶 | 园豆:1436 (小虾三级) | 2013-04-19 18:08
WaitBeforeLogin.IsHandleCreated 我在程序里也做了判断啊,可有时候还是会报错
支持(0) 反对(0) 飞蛾扑火 | 园豆:145 (初学一级) | 2013-04-19 18:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册