Laden...

Viele Event aus unterschiedlichen Threads an UI melden: Zusammenfassen?

Erstellt von a957m vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.017 Views
Thema geschlossen
A
a957m Themenstarter:in
254 Beiträge seit 2007
vor 12 Jahren
Viele Event aus unterschiedlichen Threads an UI melden: Zusammenfassen?

Hallo Kollegen,

ich programmiere gerade eine Anwendung, die Daten in separaten Threads von mehreren Mikrocontrollern über serielle Schnittstelle holt und auswertet.

Für die Visualisierung habe ich eine Forms Anwendung, die Daten visualisiert (x-y Plot und ähnliches).

Jetzt gibt es einige Zustände, innerhalb der Messwertauswertung, die ich über Events an die Oberfläche schicken will, damit diese darauf reagieren kann. Jetzt müsste ich für jedes Event innerhalb der Oberfläche fangen und mit Invoke den entsprechen MessageHandler aufrufen, gibt es da einen besseren Vorschlag ?

Vielen Dank für Eure Unterstützung.

849 Beiträge seit 2006
vor 12 Jahren

Was stört dich denn daran? die Menge der Events?

Du könntest nur einen Event bereitstellen und über die EventArgs arbeiten.

A
a957m Themenstarter:in
254 Beiträge seit 2007
vor 12 Jahren

Ja, genau, es sind momentan sehr viele Events und damit immer wieder der gleiche Code mit dem Invoke.

Das nur mit einem Event zu machen ist vielleicht keine schlechte Idee.

Ich bin gerade am Überlegen, ob ich das Thema aus den einzelnen UI Klassen auslagere und so eine Art Dispatchter Klasse mache, die ein Event aus der Daten-Klasse fängt und dann an die jeweilige UI-Klasse schickt.

153 Beiträge seit 2007
vor 12 Jahren

Oder eine Basisklasse die ein Event implementiert, von der die anderen Klassen ableiten? Müsstest dann jeweils die Events registrieren und an einer zentralen Stelle verarbeiten.

Grüße,
Chris

"Wenn Architekten genauso bauen würden, wie Programmierer programmieren, dann würde der erste Specht, der vorbeikommt, die Zivilisation zerstören." (Steven Weinberg)

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo a957m,

gibt es da einen besseren Vorschlag ?

der bessere Vorschlag steht schon in [FAQ] Controls von Thread aktualisieren lassen (Control.Invoke/Dispatcher.Invoke). Natürlich kannst (und solltest du) die Events bzw. die sich daraus ergebenden Aktualisierungen sammeln und nur relativ selten Control.Invoke aufrufen.

Die FAQ bitte immer gründlich lesen, bevor unnötige Threads erstellt werden.

herbivore

Thema geschlossen