1 ضمیمه
خطای Cross-thread operation not valid در استفاده از Backgroundworker
سلام
دوستان من در برنامم وقتی بک گراند ورکر رو صدا میزنم که توی لیست باکس چیزی بنویسم . این ارور رو میده چرا ؟
An exception of type 'System.InvalidOperationException' occurred in System.Windows.Forms.dll but was not handled in user code
Additional information: Cross-thread operation not valid: Control 'lisbox_link' accessed from a thread other than the thread it was created on.
نقل قول: مشکل با Backgroundworker
نقل قول: مشکل با Backgroundworker
سلام دوست عزیز
تا جایی که من میدونم شما نمیتونی از object هایی که به GUI مربوط میشه توی قسمت DoWork بکگراند ورکر بصورت مستقیم استفاده کنی!
واسه حل مشکل اول شما بیا یه آرایه تعریف کن و آیتماتو توی اون بریز! بعدش توی متد RunWorkerComplete اونا رو از آرایه بخون و توی ListBox بریز!
یا اگه نمایش میزان کارکرد کد خیلی برات مهمه از متد ProgressChanged استفاده کن!:چشمک:
نقل قول: مشکل با Backgroundworker
دوستان عزیز این مشکل و با کد زیر حل کردم . اگر کسی توضیحی داره در مورد این کد برای اطلاعات بیشتر ما و دوستان بفرمایید :
ListBox.CheckForIllegalCrossThreadCalls = false;
نقل قول: مشکل با Backgroundworker
سلام دوست عزیز.
ممنون که جواب سوالتون رو اینجا به اشتراک گذاشتین.
ظاهرا این کد باعث میشه که در حالت فراخوانی کنترل داخل Thread از بررسی اتصالات همزمان چشم پوشی بشه!:لبخندساده:
امروز یه نکته جدید یادگرفتم و خوشحالم:چشمک:
نقل قول: مشکل با Backgroundworker
خواهش می کنم اما مطلب که شما گفتید دقیقا برگردان فارسی خود دستور هستش .
اگر بشه مکانیسم اجرایی اون و نحوه حل مشکل و کسی بگه عالیه
نقل قول: مشکل با Backgroundworker
سلامکد زیر رو جایگزین خطی کن که ارور میده:
1.
var act = new Action(() =>
{
lisbox_link.Items.Add("sss");
});
if (lisbox_link.InvokeRequired)
lisbox_link.BeginInvoke(act);
else
act();
نقل قول: مشکل با Backgroundworker
سلام مهندس جان
برنامه اصلی خودش یه ترد اصلی داره وزمانی که اجرا میشه تمام کنترل ها رو چک میکنه و زمانی که شما می خواین از ترد دیگه به طور مستقیم از کنترل ها استفاده کنید ترد اصلی اجازه کار رو نمیده و کدی که شما استفاده کردید :
ListBox.CheckForIllegalCrossThreadCalls = false;
منظورش اینه که برنامه زمان اجرا دیگه این کنترل رو چک نکنه و خود مایکروسافت هم این نوع کد زدن رو قبول نداره بهتره برای حل مشکل خودت دنبال ره حل بهتری باشی.