PDA

View Full Version : سوال: نمایش ajax loader با استفاده از تردها



javad_r_85
پنج شنبه 08 فروردین 1392, 19:01 عصر
با سلام
می خوام زمانی که نرم افزار درحال اتصال به پایگاه داده است این زمان را به وسیله تصویر ajax loader نمایش بدم مانند تصویر زیر:
102038

چطوری می تونم این کاررا انجام بدم.
البته از ترد و backgroundworker نیز استفاده کردم اما زمانی که عملیات انجام شد تازه این تصویر نمایش داده می شود.

rezaei_y
پنج شنبه 08 فروردین 1392, 21:02 عصر
یه فرم درست کن به اسمpleasewait و تصویر متحرک رو هم روش قرار بده و یک متد با نام showloading

این کد تابع

public void showLoading()
{
try
{
pleasewait az = new pleasewait();

az.ShowDialog();
}
catch
{
}
finally
{

}

}

حالا هر موقع خواستی نمایش داده بشه از کد زیر استفاده کن
Thread tr;

tr = new Thread(delegate()
{
showLoading();
});

tr.Start();

و موقعی که کار مورد نظرت انجام شد
tr.Abort();

javad_r_85
جمعه 09 فروردین 1392, 10:01 صبح
توی فرم دیگه نمی خوام تو همون فرم می خوام picture box را نمایش بدم همانند تصویر ی که در بالا مشاهده می کنید.

Mahmoud.Afrad
جمعه 09 فروردین 1392, 19:54 عصر
وقتی backgroundworker یا ترد را شروع به اجرا میکنید پیکچربتکس را show کنید و در انتهای ترد و یا در رویداد complete بکگراندورکر پیکچرباکس را hide کنید.
در ترد:

private void button1_Click(object sender, EventArgs e)
{
pictureBox1.Show();
Thread t = new Thread(new ThreadStart(myMethod));
t.IsBackground = true;
t.Start();
}

private void myMethod()
{
// your code

this.Invoke(new Action(() => this.pictureBox1.Hide()));
}

javad_r_85
جمعه 09 فروردین 1392, 21:37 عصر
دوست عزیز این کد شما جواب نمی ده برنامه تا پایان اجرای کامل کدهای مورد نظر قفل می کنه .

Mahmoud.Afrad
شنبه 10 فروردین 1392, 12:23 عصر
دوست عزیز این کد شما جواب نمی ده برنامه تا پایان اجرای کامل کدهای مورد نظر قفل می کنه .
منظورت کدی هست که من گذاشتم؟
اگر دقت کنی یک ترد جدید ایجاد شده و شما کدهایی که زمانبر هست را باید در متد myMethod به جای // your code قرار بدی. در اینصورت دیگه برنامه قفل نمیکنه.
اگر متوجه نشدی کد خودتو بزار.