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"