PDA

View Full Version : سوال: چرا وقتی که از کنترل ها در نخ ها استفاده میکنم با Error مواجه میشوم؟



teardrop
دوشنبه 24 اسفند 1388, 15:06 عصر
با سلام

وقتی من از نخ ها در برنامه ام استفاده میکنم در این نخ ها مجبور به کنترل های روی فرم دسترسی پیدا کنم ولی زمان اجرا وقتی کامپایل به این خط میرسه Error میده.

مثال:
در یک نخ می خواهم 1000 عدد وارد لیست باکس کنم.
یک سورس کد ساده (قابل فهم ) هم بذارید بد نیست.

alireza_s_84
دوشنبه 24 اسفند 1388, 15:14 عصر
با سلام

وقتی من از نخ ها در برنامه ام استفاده میکنم در این نخ ها مجبور به کنترل های روی فرم دسترسی پیدا کنم ولی زمان اجرا وقتی کامپایل به این خط میرسه Error میده.

مثال:
در یک نخ می خواهم 1000 عدد وارد لیست باکس کنم.
سلام اینکار به دلیل ThreadSafe بودن کنترلهاست و چون شما قصد داری از Thread دیگری غیر از Thread اصلی به کنترلها دسترسی داشته باشی این پیغام خطا رو میبینی برای اینکار باید شما یک متد تعریف کنید که اینکار تغییر بر روی کنترلها رو برای شما انجام بده
بعد یک delegate تعریف کنی و با فراخوانی متد در delegateاینکار رو انجام بدی
موفق باشید

teardrop
دوشنبه 24 اسفند 1388, 22:08 عصر
یک سورس کد ساده (قابل فهم ) هم بذارید بد نیست

r00tkit
دوشنبه 24 اسفند 1388, 22:25 عصر
سلام

Cross-Thread




// The following code assumes a 'ListBox' and a 'Button' control are added to a form,
// containing a delegate which encapsulates a method that adds items to the listbox.

public class MyThreadClass
{
MyFormControl myFormControl1;
public MyThreadClass(MyFormControl myForm)
{
myFormControl1 = myForm;
}

public void Run()
{
// Execute the specified delegate on the thread that owns
// 'myFormControl1' control's underlying window handle.
myFormControl1.Invoke(myFormControl1.myDelegate);
}
}

r00tkit
دوشنبه 24 اسفند 1388, 22:30 عصر
برای :local msdn

ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.en/dv_fxmclictl/html/138f38b6-1099-4fd5-910c-390b41cbad35.htm