PDA

View Full Version : دستر invoke



omidan321
سه شنبه 09 آبان 1391, 17:29 عصر
سلام به همگی کسی در مورد دستور invoke منبعی یا چیزی میدونه ؟
منتظر نظرات شما هستم

hakim22
سه شنبه 09 آبان 1391, 19:29 عصر
این متد مربوط به Delegate ها میشه.
و منظور از اون فراخوانی متدی است که Delegate به اون اشاره میکنه.

یک Delegate مثل یک قالب برای متدها عمل میکنه. و شما می توانید یک متد (تابع ) که نوشتید رو مثل یک متغیر درونش بریزید و هر وقت خواستید متدی که درون Delegate ذخیره کردید رو اجرا کنید از دستور Invoke استفاده می کنید.

گزینه های BeginInvoke و EndInvoke هم زمانی استفاده میشه که شما می خواهید متد رو به صورت همزمان اجرا کنید ( متد به یک Thread دیگه میره و از اونجا اجرا میشه)

البته در اصل از یک Interface مشتق میشه و ممکنه خیلی از کنترلها یا کلاسها هم دارای چنین متدی باشند.

omidan321
سه شنبه 16 آبان 1391, 10:58 صبح
سلام جناب حکیم و ممون از جوابتون اما متاسفانه به دلیل پیچیدگی این دو دستور با این توضیحات مختصر قادر به کار با اونا نیستم در صورت امکان اگه لطف کنید و یه مثال چند خطی بنویسید و اونو توضیح بدید شاید به درک موضوع خیلی کمک کنه
پیشاپیش ممنون از لطفتون

hakim22
پنج شنبه 18 آبان 1391, 22:05 عصر
فرض کنید که میخواهید در برنامه یک دکمه Redo داشته باشید که آخرین رویداد هر چی که بود دوباره اجرا بشه.
شما می توانید یک Delegate تعریف کنید و آخرین رویداد رو به اون نسبت بدید.
بعد اون Delegate رو اجرا کنید.

معمولا شما با متغیرها مقادیر رو ذخیره می کنید تا بعدا دوباره استفاده کنید . با Delegate ها شما متدها ، توابع و رویداد ها رو ذخیره می کنید تا دوباره اجرا کنید.