• 两个线程对同一个Form同时执行frmBaseForm出现报错

    2016/10/19 小城 1 评论  ,  , 

public ThreadExcute(int aSignal,BaseForm aForm) //执行线程类的构造函数
        {
            frmBaseForm = aForm;
            MomentThread = new Thread(new ThreadStart(ThreadMomentFun));
            MomentThread.Start();
        } 

private void ThreadMomentFun()

{

//

//这里执行一个费时间的Sql查询,将查询结果整合到frmBaseForm

//

MyinvokeMoment MomentInvoke = new MyinvokeMoment(MainThreadExcute);
frmBaseForm.BeginInvoke(MomentInvoke); //

}

 

写了一个父窗体frmBaseForm,然后在父窗体frmBaseForm_Load事件实例化ThreadExcute,执行Sql搜索,

情况1:打开一个继承frmBaseForm的子窗体1正常执行;

情况2:打开子窗体1同时打开子窗体2,Sql查询比较费时间,也就是子窗体1的ThreadMomentFun()正在执行时,子窗体的也在执行,出现报错 :Cannot call  Invoke  or InvokeAsync on a control until the window handle has been created.

应该描述清楚了,希望得到回复&解答.伯乐在线的第一次发帖,kiss

1 收藏


直接登录
最新评论
  • 小城 程序员 2016/10/19

    修正一下:
    两个线程对同一个Form同时执行frmBaseForm.BeginInvoke 出现报错
    执行线程的类单独写在一个类里,父窗体在BaseForm_Load时实例化该类,

    但是同时打开两个继承BaseForm的子窗体Form1和Form2时有报错,

    单独打开一个子窗体就不会出错