PDA

View Full Version : مبتدی: سوال در مورد تغيير دادن مقدار يك شئ توسط نخ ديگر



ahmadreza.s
یک شنبه 01 شهریور 1394, 09:29 صبح
سلام

من يك نخ ايجاد كردم كه برام يه كاري رو انجام ميده ! و يك پراگرس بار گذاشتم كه درصد اون كار رو برام نشون بده (به دلايلي از بكگراند وركر نخواستم استفاده كنم)

اين هم كد منه :

void salam(){

for(int i=1;i<=100;i++){

//DoSomeThing
progressBar1.value=i;

}
}


Thread mythread=new Thread(salam);
mythread.Start();



اما همين كه ترد رو استارت ميزنم ، استثنا پرتاب ميكنه كه نميتونه پراگرس بار رو مقدارش رو عوض كنه !
يه جا هم خوندم كه ميشه اين كد رو اضافه كرد ولي زياد مناسب نيست !
CheckForIllegalCrossThreadCalls=false;

حالا راه كار شما چيه؟

SabaSabouhi
دوشنبه 02 شهریور 1394, 08:20 صبح
سلام

من يك نخ ايجاد كردم كه برام يه كاري رو انجام ميده ! و يك پراگرس بار گذاشتم كه درصد اون كار رو برام نشون بده (به دلايلي از بكگراند وركر نخواستم استفاده كنم)

اين هم كد منه :

void salam(){

for(int i=1;i<=100;i++){

//DoSomeThing
progressBar1.value=i;

}
}


Thread mythread=new Thread(salam);
mythread.Start();



اما همين كه ترد رو استارت ميزنم ، استثنا پرتاب ميكنه كه نميتونه پراگرس بار رو مقدارش رو عوض كنه !
يه جا هم خوندم كه ميشه اين كد رو اضافه كرد ولي زياد مناسب نيست !
CheckForIllegalCrossThreadCalls=false;

حالا راه كار شما چيه؟

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

صبا صبوحی