morteza271
سه شنبه 06 اردیبهشت 1390, 14:28 عصر
سلام دوستان.
یه مشکلی دارم که بدجوری وقتم رو گرفته و اعصابم رو ...
داستان از این قراره که :
من یه تابع به اسم CreateNumber دارم که این تابع کارش اینه که عدد های بین دو عدد رو ایجاد میکنه.این دو عدد رو هم از داخل تکست باکس های داخل فرم میخونه.
مثلا بین دو عدد 10 و 15 عددهای 11و12و13و14و15 رو در دخل یه TreeView مینویسه :
کد اصلی این تابع :
int Number = FromNumber;
for (long i = FromNumber; i <= ToNumber; i++)
{
Number++;
tvNumberList.Nodes.Add("0" + Number.ToString());
Counter++;
radprog_value = (float)Counter / (float)Total;
radprog_value = radprog_value * 100;
}
و من میخوام همزمان با این کار یه پروگرس بار هم پر بشه.
که برای این کار با استفاده از ترد ها اینطوری کد نوشتم :
t1 = new Thread(new ThreadStart(CreateNumber));
t1.Start();
برای پر شدن پروگرش بار هم یه تایمر گذاشتم که مقدار Value پروگرس بار رو برابر radprog_value میکنه.
اما مشکل اونجاست که در داخل تابع به خط
tvNumberList.Nodes.Add("0" + Number.ToString());
گیر میده و خطای زیر رو میده :
Action being performed on this control is being called from the wrong thread. Marshal to the correct thread using Control.Invoke or Control.BeginInvoke to perform this action.
دوستان لطف کنن بهم کمک کنن.
با تشکر
یه مشکلی دارم که بدجوری وقتم رو گرفته و اعصابم رو ...
داستان از این قراره که :
من یه تابع به اسم CreateNumber دارم که این تابع کارش اینه که عدد های بین دو عدد رو ایجاد میکنه.این دو عدد رو هم از داخل تکست باکس های داخل فرم میخونه.
مثلا بین دو عدد 10 و 15 عددهای 11و12و13و14و15 رو در دخل یه TreeView مینویسه :
کد اصلی این تابع :
int Number = FromNumber;
for (long i = FromNumber; i <= ToNumber; i++)
{
Number++;
tvNumberList.Nodes.Add("0" + Number.ToString());
Counter++;
radprog_value = (float)Counter / (float)Total;
radprog_value = radprog_value * 100;
}
و من میخوام همزمان با این کار یه پروگرس بار هم پر بشه.
که برای این کار با استفاده از ترد ها اینطوری کد نوشتم :
t1 = new Thread(new ThreadStart(CreateNumber));
t1.Start();
برای پر شدن پروگرش بار هم یه تایمر گذاشتم که مقدار Value پروگرس بار رو برابر radprog_value میکنه.
اما مشکل اونجاست که در داخل تابع به خط
tvNumberList.Nodes.Add("0" + Number.ToString());
گیر میده و خطای زیر رو میده :
Action being performed on this control is being called from the wrong thread. Marshal to the correct thread using Control.Invoke or Control.BeginInvoke to perform this action.
دوستان لطف کنن بهم کمک کنن.
با تشکر