PDA

View Full Version : سوال: نمایش فرم با بک گراند ورکر به عنوان لودینگ !



mehrdad1991h
دوشنبه 16 اردیبهشت 1392, 15:39 عصر
سلام
چطور میشه یه فرم را در بک گراند ورکر نمایش داد و سپس بستش !!!
مثلا اینجا را نگاه کنید

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
Form load = new Loading();
load.ShowDialog();
// انحام دستورات من
load.Close();
}

خوب الان مثلا فرم لودینگ را نمایش میدهیم به وسیله DialogResult چون میخوایم کاربر هیچ کاری نتونه انجام بدهد

بعد الان کار مورد نظر ما انجام شد چجوری لودر را ببندیمش که فرم اصلی دوباره در دسترس قرار بگیره ؟

اینجوری که نوشتم درسته ایا ؟
اصولی است ؟

لطفا راهنمایی فرمایید
سپاس

Mahmoud.Afrad
دوشنبه 16 اردیبهشت 1392, 16:46 عصر
مادامی که فرمی که به صورت 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();
}