PDA

View Full Version : حرفه ای: بسیار مهم در مورد نخ اجرایی



vb develop
جمعه 03 مهر 1388, 04:18 صبح
سلام دوستان یک سئوال دارم که سعی میکنم ساده مطرح کنمش :

من متدی در برنامه دارم با نام X که این متد قرار هست یک کار زمانبر رو انجام بده (مثلا جستجو در بین 1000 PictureBox روی فرم و تصویر دهی برخی از آنها)

این تابع زمان بر، در رویداد های مختلفی مورد استفاده قرار میگیره، در واقع بیش از یکبار اجرا میشه و دفعات اجراش مشخص نیست.

میخواستم بدونم که چکار باید بکنم که این متد X، هربار که فراخوانده میشه در یک ریسمان جدا اجرا بشه و فرم اصلی ما Freeze نشه.

نکته اینجاست که نمیشه از System.Thread استفاده کرد چون کنترل های روی فرم در UI Thread هستند و دسترسی بهشون از یک نخ دیگه باعث ایجاد Cross میشه.

البته من ویدئو های دوست عزیز،آقای طباطبایی رو در مورد AsyncCallBack دیدم اما تاحالا نتونستم تو پروژم پیادش کنم

اگر کسی از دوستان بتونه تو یک مثال، این تابع X مجازی رو پیاده کنه واقعا ازش ممنون میشم

Sajjad.Aghapour
جمعه 03 مهر 1388, 14:11 عصر
شما به چند روش میتونید این کار رو بکنید.ولی در مورد کار شما بهتره از backgroundWorker استفاده کنید.

در کاری که شما می خواین انجام بدید باید توجه داشته باشید که نخ در حال اجرا نمی تونه دوباره فراخوانی بشه و باید هرگونه ورود به اون در حال اجرا lock بشه....
می تونید به همون روش AsyncCallBack هم پیاده سازی کنید ولی bgWorker بهترین گزینه برای شما خواهد بود...
...
موفق باشید/
...