PDA

View Full Version : استفاده از متد lock یا همون Synchronized



pouria_bayat
دوشنبه 29 مهر 1392, 22:29 عصر
سلام دوستان متسافانه من یک مشگلی دارم توی برنامه و استفاده از این متد در C#‎ ساختار برنامه من به این شکل هستش :
یک ترد به شکل زیر تعریف شده و یک تابع رو اجرا میکند:


private Thread thFind;
private ThreadStart Find;
Find = new ThreadStart(Search);
thFind = new Thread(Find);


همانطور که می بینید در این ترد تابع Saerch شروع به اجرا میکنه که درون ان:



void Search()
{
for(int i=0;i<=10;i++){
if(i==x)
run();
}
while(true){
if(x==y)
run();

}


قرار دارند که بنا به شرایط و تصمصیات موجود در شرط if تابع run صدا زده میشه اما اگر بخواهیم تا زمانیکه یک پروسه از تابع run تمام نشده دوباره این تابع صدا زده نشه مشگل پیدا میشه و متد lock عمل نمیکنه تابع run به شکل زیر هستش:


void run()
{
lock(this){
button x = new button();
x.text = 10;
//component add to ...
}
}

خواهشا اگر کسی میدونه کمک کنه که چرا متد Lock درست کار نمیکنه و باید چیکار کنم.