Avatar ·

Cross-thread operation not valid: Wie man von einem anderen Thread aus auf Steuerelemente in C# WinForms zugreift

Hallo zusammen! Ich bin neu in C# und WinForms und bin auf ein Problem mit Multithreading gestoßen. Ich schreibe eine Anwendung, die Daten aus dem Internet lädt und in einer ListBox anzeigt. Damit die Benutzeroberfläche nicht einfriert, starte ich den Ladevorgang in einem separaten Thread mit Task.Run. Hier ist ein vereinfachter Code: ```csharp private void buttonStart_Click(object sender, EventArgs e) { Task.Run(() => LoadData()); } private void LoadData() { for (int i = 0; i < 10; i++) { // Simulation des Datenladens Thread.Sleep(1000); // Versuche, ein Element zur ListBox hinzuzufügen listBoxResult.Items.Add("Element " + i); } } ``` Beim Ausführen der Zeile `listBoxResult.Items.Add(...)` wird eine Ausnahme ausgelöst: "Cross-thread operation not valid: Control 'listBoxResult' accessed from a thread other than the thread it was created on". Ich verstehe, dass dies daran liegt, dass die Steuerelemente im Hauptthread erstellt wurden, ich aber aus einem Hintergrundthread darauf zugreife. Aber wie kann ich das richtig beheben? Ich habe über Invoke und BeginInvoke gelesen,