Was ist los mit meinem Cross-Thread-Aufruf in Windows Forms?

Ich habe ein Problem mit einer Windows Forms-Anwendung.

Ein Formular muss von einem anderen Thread angezeigt werden. Also habe ich in der Formularklasse den folgenden Code:

private delegate void DisplayDialogCallback();

public void DisplayDialog()
{
    if (this.InvokeRequired)
    {
        this.Invoke(new DisplayDialogCallback(DisplayDialog));
    }
    else
    {
        this.ShowDialog();
    }
}

Now, jedes Mal, wenn ich das starte, einInvalidOperationException wird auf die Linie @ geworfthis.ShowDialog();:

"Threadübergreifender Vorgang nicht gültig: Steuerung von 'SampleForm', auf die von einem anderen Thread als dem Thread zugegriffen wurde, auf dem er erstellt wurde."

Was ist los mit diesem Stück Code? Ist es nicht eine gültige Methode, um Cross-Thread-Anrufe zu tätigen? Gibt es etwas besonderes mitShowDialog()?

Antworten auf die Frage(14)

Ihre Antwort auf die Frage