SabaSabouhi
چهارشنبه 16 اردیبهشت 1388, 13:09 عصر
با سلام
در یک فرم، thread جدیدی میسازم و متدی از یک کلاس static رو به اون معرفی میکنم.
اون thread در شرایطی باید روی فرم من یه تغییری بده. برای این کار به هیچ شکلی نتونستم با یک delegate این کار رو انجام بدم چون ایراد میگرفت که برای استفاده (control.invoke) از non-static member باید حتماً از یک instance استفاده کنم.
برای حل این مشکل توی کلاس static خودم یک delegate ساختم و اون رو از توی load فرمم مقدار دهی کردم. اما باز همین ایراد رو میگرفت.
وقتی بجای control.invoke ، خود delegate رو به شکل ()myDelegate اجرا میکردم هم خطا میگرفت که این کنترل تو یه thread ایجاد شده و تو یه thread دیگه نمیشه بهش دست زد.
ناچار شدم یه متد تو فرم بسازم، با delegate به کلاس معرفیش کنم. بعد تو همون متد یه delegate دیگه بسازم که متد مربوط به تغییر در فرم رو اجرا کنه. اولی رو به شکل ()myDelegate و دومی رو به شکل control.invoke اجرا کنم. . . . و مشکل حل شد.
اما چرا؟
صبا صبوحی
در یک فرم، thread جدیدی میسازم و متدی از یک کلاس static رو به اون معرفی میکنم.
اون thread در شرایطی باید روی فرم من یه تغییری بده. برای این کار به هیچ شکلی نتونستم با یک delegate این کار رو انجام بدم چون ایراد میگرفت که برای استفاده (control.invoke) از non-static member باید حتماً از یک instance استفاده کنم.
برای حل این مشکل توی کلاس static خودم یک delegate ساختم و اون رو از توی load فرمم مقدار دهی کردم. اما باز همین ایراد رو میگرفت.
وقتی بجای control.invoke ، خود delegate رو به شکل ()myDelegate اجرا میکردم هم خطا میگرفت که این کنترل تو یه thread ایجاد شده و تو یه thread دیگه نمیشه بهش دست زد.
ناچار شدم یه متد تو فرم بسازم، با delegate به کلاس معرفیش کنم. بعد تو همون متد یه delegate دیگه بسازم که متد مربوط به تغییر در فرم رو اجرا کنه. اولی رو به شکل ()myDelegate و دومی رو به شکل control.invoke اجرا کنم. . . . و مشکل حل شد.
اما چرا؟
صبا صبوحی