次のコードを使用して、バックグラウンドワーカースレッドを使用して、ボタンクリック時に別のスレッドでメインフォームに別のフォームを表示しようとしています:
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;
}
しかし問題は、メイン フォームをクリックすると、別のスレッドで実行されている別のフォームが非表示になることです。メインスレッドが実行を完了するまで表示してから、適切に破棄するにはどうすればよいですか?