مادامی که فرمی که به صورت ShowDialog باز شده ، بسته نشه کدهای بعدی اجرا نخواهند شد. پس جایی که بکگراندورکر را ران میکنید بعدش فرم را نمایش بدید و در رویداد مناسب هم فرم لودینگ را ببندید.
مثال:
private FrmLoading loading;
private void button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
loading = new FrmLoading();
loading.ShowDialog();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
Thread.Sleep(10000);
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
loading.Dispose();
}