View Full Version : کار متود Invoke چیست و چگونه باید استفاده کرد
HAMRAHSOFT.IR
یک شنبه 18 بهمن 1394, 00:31 صبح
روش استفاده از Invoke چگونه می باشد
base.Invoke(delegate {
this.progressBar1.Maximum = files.Length;
this.progressBar1.Value = 0;
this.progressBar1.Step = 1;
});
چرا خطا می ده
علت این خطا چی
Severity Code Description Project File Line
Error CS1660 Cannot convert anonymous method to type 'Delegate' because it is not a delegate type Updater
ژیار رحیمی
یک شنبه 18 بهمن 1394, 10:23 صبح
به اینصورت اصلاح کنید (خطای تبدیل نشدن متد ناشناخته به delegate میده شما باید delegate رو cast به (MethodInvoker)) کنی
base.Invoke((MethodInvoker)delegate {
this.progressBar1.Maximum = files.Length;
this.progressBar1.Value = 0;
this.progressBar1.Step = 1;
});
زمانی از Invoke استفاده میکنیم که از Threadی دیگر بخواهیم عناصر(UI) را در Main Thread اجرا میشه را دستکاری کنیم
HAMRAHSOFT.IR
یک شنبه 18 بهمن 1394, 10:49 صبح
ممنون میشه یک توضیح بیشتر بدید
base.Invoke(() => progressBar1.Value = i + 1);
ژیار رحیمی
یک شنبه 18 بهمن 1394, 11:00 صبح
توضیحات به پست قبلی اضافه شد .به این روش م میشه متد Invoke رو فراخوانی کرد.برای نمونه مثال و توضیحات بیشتر به لینک زیر مراجعه کنید
http://stackoverflow.com/questions/14703698/invokedelegate
و
https://msdn.microsoft.com/en-us/library/system.windows.forms.methodinvoker(v=vs.110).aspx
https://msdn.microsoft.com/en-us/library/zyzhdc6b(v=vs.110).aspx
HAMRAHSOFT.IR
یک شنبه 18 بهمن 1394, 12:17 عصر
ممنون میشه یک توضیح بیشتر بدید
base.Invoke(() => progressBar1.Value = i + 1);
طبق را هنما روفتم ولی این کده هر کاری می کنم نمیشه
ژیار رحیمی
یک شنبه 18 بهمن 1394, 15:43 عصر
به اینصورتم بنویس ببین به جواب میرسی.اگر به جواب نرسییدی با همان روش پست قبلی بنویس
base.Invoke(new Action(() => progressBar1.Value = i + 1));
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.