การดำเนินการข้ามเธรดไม่ถูกต้อง: การควบคุมการเข้าถึงจากเธรดอื่นที่ไม่ใช่เธรดที่สร้างขึ้น
ฉันมีสถานการณ์ (แบบฟอร์ม Windows, C #, .NET) มีรูปแบบหลักที่โฮสต์การควบคุมผู้ใช้บางส่วน การควบคุมผู้ใช้ดำเนินการกับข้อมูลจำนวนมากเช่นถ้าฉันเรียกUserControl_LoadวิธีการโดยตรงUI จะไม่ตอบสนองต่อช่วงเวลาสำหรับการดำเนินการตามวิธีโหลด เพื่อเอาชนะสิ่งนี้ฉันโหลดข้อมูลในเธรดอื่น (พยายามเปลี่ยนรหัสที่มีอยู่ให้น้อยที่สุดเท่าที่จะทำได้) ฉันใช้เธรดผู้ทำงานเบื้องหลังซึ่งจะโหลดข้อมูลและเมื่อเสร็จแล้วจะแจ้งให้แอปพลิเคชันทราบว่าได้ทำงานเสร็จแล้ว ตอนนี้เป็นปัญหาจริง UI ทั้งหมด (ฟอร์มหลักและส่วนควบคุมย่อยผู้ใช้) ถูกสร้างขึ้นบนเธรดหลักหลัก ในวิธีโหลดของการควบคุมผู้ใช้ฉันกำลังดึงข้อมูลตามค่าของการควบคุมบางอย่าง (เช่นกล่องข้อความ) ใน userControl รหัสเทียมจะมีลักษณะเช่นนี้: รหัส 1 UserContrl1_LoadDataMethod() { if (textbox1.text == "MyName") // This gives exception { //Load data corresponding to "MyName". //Populate a globale variable List<string> which will be binded to …