0

我有一个winform,用户通过单击按钮启动一个进程,并在另一个线程上运行的另一个winform上显示正在运行的进程信息。按钮点击中的代码如下:

 private void btn_Click(object sender, EventArgs e)
    {
       Thread th=new Thread(ShowInfoForm);
       th.Start();
       //Code for process execution
       EditInfoForm();
       th.Join();
       this.BringToFront();           
    }


private void ShowInfoForm()
    {
        infoForm = new InfoForm();
        infoForm.showBox("Process Started", infoForm.MsgLevel.INFO,ButtonOK.DISABLED);
    }
private void EditInfoForm()
    {
        infoForm.Invoke((MethodInvoker)(() => infoForm.EditBox("Process Completed", infoForm.MsgLevel.INFO,ButtonOK.ENABLED));
    }

bringToFront除了主线程上的调用外,一切正常。单击“确定”按钮退出信息表单后,主表单按 z 顺序返回。我该如何解决这个问题?

PS 我知道最好的做法是将 UI 保持在同一个线程中并在后台线程上运行进程,但这是大量代码,我无法对其进行编辑。

4

0 回答 0