2012-04-10 2 views
0

Ich habe eine Klasse, für die Eigenschaften mit Daten aus dem seriellen DataReceived-Ereignis C# aktualisiert werden müssen.Verwenden von Daten aus C# DataReceived-Thread in einer übergeordneten Klasse (NO UI, kann nicht aufgerufen werden)

Ich versuche nicht, eine Benutzeroberfläche zu aktualisieren, aber die einzigen Referenzen, die ich über die Ergebnisse des DataReceived -Ereignisses (die auf einem anderen Thread ausgeführt wird) finden, verwenden .Invoke, um die Daten in ein UI-Steuerelement zu erhalten. Meine Klasse ist nicht mit einer Benutzeroberfläche verknüpft. Daher ist Invoice nicht verfügbar.

Wenn der Handler versucht, eine Eigenschaft in der Klasse zu ändern, bekomme ich den gefürchteten Fehler: "Der aufrufende Thread kann nicht auf dieses Objekt zugreifen, weil ein anderer Thread es besitzt."

Was ist ein Prozess zum Abrufen der Ergebnisse in den übergeordneten Thread?

+1

Zeigen Sie Klasse. –

+0

Sie sagen, Sie möchten "die Daten in ein UI-Steuerelement bringen" und dann "Ich habe kein UI-Steuerelement". Also welches ist es? –

+0

Versuchen Sie diesen Link: http://www.codeproject.com/Articles/75770/Basic-serial-port-listening-application – Simon

Antwort

1

Wenn Sie keine UI-Referenz bis DAL bereitstellen möchten, können Sie diesen Ansatz unter Verwendung der SynchronizationContext verwenden.

+0

Vielen Dank @MChicago. das war es, was ich brauchte, um mit dem Projekt voranzukommen. –

Verwandte Themen