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.
Was stört dich denn daran? die Menge der Events?
Du könntest nur einen Event bereitstellen und über die EventArgs arbeiten.
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.
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)
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