PDA

View Full Version : تغییر متن دکمه توسط دو Thread



MRasoul
جمعه 22 اسفند 1393, 13:42 عصر
سلام
فرض کنید یه دکمه هست که قراره یه محاسباتی رو انجام بده که به دلیل زمان بر بودن محاسبات، این محاسبات توسط Thread دیگری انجام میشه که برنامه اصلی لگ نداشته باشه
حالا وقتی دکمه کلیک میشه، ابتدا متن دکمه به "در حال محاسه..." تغییر میکنه و سپس Thread مورد نظر اجرا میشه
من میخوام بعد از محاسبه، جواب محاسبه به صورت متن همون دکمه نمایش داده بشه اما چون محاسبات در Thread جدا انجام میشه هنگام تغییر متن دکمه، برنامه خطا میده که این دکمه توسط Thread دیگر(برنامه اصلی) مورد استفاده است و شما نمیتونید تغییری داخلش بدین
چجوری حلش کنم؟

SabaSabouhi
جمعه 22 اسفند 1393, 16:33 عصر
سلام
فرض کنید یه دکمه هست که قراره یه محاسباتی رو انجام بده که به دلیل زمان بر بودن محاسبات، این محاسبات توسط Thread دیگری انجام میشه که برنامه اصلی لگ نداشته باشه
حالا وقتی دکمه کلیک میشه، ابتدا متن دکمه به "در حال محاسه..." تغییر میکنه و سپس Thread مورد نظر اجرا میشه
من میخوام بعد از محاسبه، جواب محاسبه به صورت متن همون دکمه نمایش داده بشه اما چون محاسبات در Thread جدا انجام میشه هنگام تغییر متن دکمه، برنامه خطا میده که این دکمه توسط Thread دیگر(برنامه اصلی) مورد استفاده است و شما نمیتونید تغییری داخلش بدین
چجوری حلش کنم؟

سلام دوست عزیز
خیلی راحت هست. شما باید از Invoke استفاده کنی. اخیراً چند بار توضیح داده شده. جستجو کنی پیدا می‌کنی.
تو جستجو از کلمه کلیدی InvokeRequired استفاده کن.
یادم نیست تو کدوم تاپیک بود، وگرنه لینکش رو برات می‌گذاشتم.

صبا صبوحی

MRasoul
جمعه 22 اسفند 1393, 18:40 عصر
سلام دوست عزیز
خیلی راحت هست. شما باید از Invoke استفاده کنی. اخیراً چند بار توضیح داده شده. جستجو کنی پیدا می‌کنی.
تو جستجو از کلمه کلیدی InvokeRequired استفاده کن.
یادم نیست تو کدوم تاپیک بود، وگرنه لینکش رو برات می‌گذاشتم.

صبا صبوحی
سلام
ممنون
البته من برای Wpf می خواستم و Invoke فکر کنم برای C# هست
قبلا هم گفته بودین باید از Dispacher.Invoke استفاده کنم
حل شد
یه دنیا ممنون