C# – Der Zugriff auf das Steuerelement erfolgte von einem anderen Thread…

Eine Fehlermeldung wie diese:

„Der Zugriff auf das Steuerelement txtBarcode erfolgte von einem anderen Thread“

oder so ähnlich, deutet daraufhin, dass versucht wird aus einem anderen Thread Zugriff auf ein Control zu nehmen als der in dem das Control erstellt wurde.

Das geschieht zum Beispiel wenn, man im Timer Event oder dem DataReceived Event der SerialPort Klasse aus dem System.IO.Ports Namespace versucht auf ein Control in einem Windows Forms Programm zuzugreifen.

Eine Lösung für das Problem zeigt das nachfolgende Beispiel indem ein Barcode Scanner an die seriellen Schnittstelle angeschlossen ist und der Barcode in der Text Eigenschaft des Controls txtBarcode ausgegeben werden soll.

Hier nun der Code Ausschnitt des DataReceived Events mit Thread sicherem Zugriff auf das txtBarcode Control:

if (this.txtBarcode.InvokeRequired)
{
    this.txtBarcode.Invoke((MethodInvoker)delegate()
    {
        this.txtBarcode.Text = bCode;
    }
    );
}
else
{
    this.txtBarcode.Text = bCode;
}

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.