0

バックグラウンド スレッドでフォームを表示する方法はありますが、UI スレッドの前では常にモードレスとして表示できますか?

たとえば、parentForm で実行される UI スレッドがあり、その上に childForm で実行される backgroundworker スレッドがあります。モードレスで childForm を使用して parentForm を使用できますか。つまり、常に childForm を表示できますが、parentForm をブロックすることはできません。

childForm.ShowDialog(parentForm) が UI スレッドをブロックするようで、UI スレッドで childForm を呼び出したくありません。

4

1 に答える 1

1

どういう意味かわかりませんがShow()、メイン UI をブロックせずにフォームを表示したい場合は、いつでも特定のフォーム内で実行を試みることができます。

Form2 _Form2 = new Form2();
_Form2.Show();

または、新しいフォームをアプリケーションのメイン フォームとして非同期に実行する場合は、新しいフォームを作成してThreadその中でフォームを実行してみてください。

public void RunThread()
{
    Thread thread = new Thread(new ThreadStart(RunForm)); //Create a new thread to execute RunForm()
    thread.Name = "NewForm"; //Name the new thread (Not required)
    thread.Start(); //Start executing RunForm() in the new thread
}

public void RunForm()
{
    try
    {
        Application.Run(new Form2()); //Run Form2() as the main form of the application
    }
    catch (Exception ex)
    {
        //DoSomething
        //MessageBox.Show(ex.Message);       
    }
}

ありがとう、
これがお役に立てば幸いです:)

于 2012-10-31T04:40:20.127 に答える