我有一个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 保持在同一个线程中并在后台线程上运行进程,但这是大量代码,我无法对其进行编辑。