2

次のコードを使用して、バックグラウンドワーカースレッドを使用して、ボタンクリック時に別のスレッドでメインフォームに別のフォームを表示しようとしています:

    private void simpleButton1_Click(object sender, EventArgs e)
    {
        //this.Opacity = 50.5;
        bw.RunWorkerAsync();                      
        GetData();
        bw.CancelAsync();

    }

    private void GetData()
    {
        for (int i = 0; i < 500000; i++)
        {
            datatable.Rows.Add(new object[] { "raj", "raj", "raj", i });
        }
    }

    void bw_DoWork(object sender,DoWorkEventArgs e)
    {

        XtraForm1 frm = new XtraForm1();
        while (!bw.CancellationPending)
        {
            frm.ShowDialog();
            frm.BringToFront();
            continue;
        }
        e.Cancel = true;
    }

しかし問題は、メイン フォームをクリックすると、別のスレッドで実行されている別のフォームが非表示になることです。メインスレッドが実行を完了するまで表示してから、適切に破棄するにはどうすればよいですか?

4

2 に答える 2