PDA

View Full Version : حرفه ای: علت Cross-Thread در دسترسی به کنترلها



رافعی مهدی
شنبه 12 شهریور 1390, 10:27 صبح
با سلام
علت اصلی Cross-Thread در دستیابی به پراپرتیهای کنترلها چیست؟

توضیحات بیشتر:
در دستیابی به پراپرتیهای مشابه از کنترلهایی با انواع متفاوت با استفاده از Threadای بجز Thread اصلی گاهی تداخل بین ریسمانها به وجود می آید و گاهی نه. علت این عکس العمل دوگانه چیست؟
به طور مثال، در حالت پیش فرض نمیتوان متن یا رنگ پس زمینه ی یک TextBox را با thread دیگری غیر از UI-thread تغییر داد. این در حالی است که میتوان پراپرتی Value سلولهای یک DataGridView را با ریسمانهای دیگر بدون هیچ مشکلی set کرد و یا رنگ پس زمینه ی آنها را تغییر داد. از طرفی نمیتوان پراپرتی Visible یک ردیف از DataGridView را بدون تداخل ریسمانها عوض کرد!!!

Felony
شنبه 12 شهریور 1390, 11:09 صبح
در مورد Thread Safe بودن متدها در MSDN تحقیق کنید .

رافعی مهدی
شنبه 12 شهریور 1390, 11:25 صبح
مرسی، اما...
روشهای متعدد Thread-Safe بودن یک کد مشخص هستند. من در اینجا به دنبال قانونی هستم که بر اساس آن بدون نیاز به تست کردن هر یک از پراپرتی ها بتوانم بفهمم که آیا دسترسی به آنها از طریق یک Thread دیگر نیازمند به بکارگیری یکی از متدهای Thread-Safe است یا نه؟

__________________________________________________ _________________
جستجوی عبارت "C#.net "Cross-Thread Reason در Google هیچ نتیجه ای در بر ندارد.

رافعی مهدی
یک شنبه 13 شهریور 1390, 12:55 عصر
همین سوال رو در Stack Overflow (http://stackoverflow.com/questions/7297600/rule-of-the-cross-thread-operation-exception) مطرح کردم. اینطور که گفته شده نمیشه چنین قانونی رو بدست آورد و همواره بهتره فرض رو بر این بگذاریم که استثناء Cross-Thread Operation رخ میده مگه اینکه صریحاً گفته شده باشه! :(