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 قرار بدی. در اینصورت دیگه برنامه قفل نمیکنه.
اگر متوجه نشدی کد خودتو بزار.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.