So aktualisieren Sie die GUI aus einem anderen Thread in C# WinForms
Hallo zusammen! Ich bin ein C#-Anfänger und schreibe eine kleine WinForms-Anwendung. Ich habe einen Button, bei dessen Klick eine langwierige Operation gestartet wird (z. B. das Herunterladen von Daten aus dem Internet oder die Verarbeitung einer großen Datei). Ich möchte, dass die Oberfläche während dieser Operation reaktionsfähig bleibt, daher starte ich sie in einem separaten Thread mit `Task.Run`.
Das Problem tritt auf, wenn ich versuche, UI-Elemente (z. B. ProgressBar, Label oder TextBox) aus diesem Hintergrundthread zu aktualisieren. Die Anwendung stürzt mit einer Ausnahme ab: "InvalidOperationException: Cross-thread operation not valid. Control 'progressBar1' accessed from a thread other than the thread it was created on."
Hier ist ein Beispiel meines Codes:
```csharp
private void buttonStart_Click(object sender, EventArgs e)
{
Task.Run(() => DoWork());
}
private void DoWork()
{
for (int i = 0; i <= 100; i++)
{
// Simulation einer langwierigen Arbeit
Thread.Sleep(50);
// Versuche, die Fortschrittsleiste zu aktualisieren
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen