我在一个异步的方法中使用了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(); }); }
这个东西我帮你在winform下测试下(非DevExpress窗体)是正常运行的....
我在频繁测试的时候大部分是正常的,有时候会出现错误!出错几率比较小,可怎么避免这种错误呢?
Form.IsHandleCreated
都有这个属性的,使用之前,用这个判断.
WaitBeforeLogin.IsHandleCreated 我在程序里也做了判断啊,可有时候还是会报错