Avatar ·

خطأ Cross-thread operation not valid: كيفية الوصول إلى عناصر التحكم من مؤشر ترابط آخر في C# WinForms

مرحباً بالجميع! أنا مبتدئ في C# و WinForms، وقد توقفت عند مشكلة مع تعدد المهام. أكتب تطبيقاً يقوم بتحميل البيانات من الإنترنت وعرضها في ListBox. لكي لا تتجمد الواجهة، أقوم بتشغيل التحميل في مؤشر ترابط منفصل باستخدام Task.Run. إليك الكود المبسط:\n\n```csharp\nprivate void buttonStart_Click(object sender, EventArgs e)\n{\n Task.Run(() => LoadData());\n}\n\nprivate void LoadData()\n{\n for (int i = 0; i < 10; i++)\n {\n // محاكاة تحميل البيانات\n Thread.Sleep(1000);\n // أحاول إضافة عنصر إلى ListBox\n listBoxResult.Items.Add("عنصر " + i);\n }\n}\n```\n\nعند التشغيل، في السطر `listBoxResult.Items.Add(...)` يظهر استثناء: "Cross-thread operation not valid: Control 'listBoxResult' accessed from a thread other than t"