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メインスレッドでの呼び出しを除いて、すべて正常に動作します。「OK」ボタンをクリックして情報フォームを終了した後、メインフォームは z オーダーに戻ります。どうすればこれを解決できますか?

PS UI を同じスレッドに保持し、バックグラウンド スレッドでプロセスを実行することがベスト プラクティスであることは理解していますが、これは大量のコードであり、編集できません。

4

0 に答える 0