Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Wie sendet man in C# Events von einer Klasse in die andere?
Ozzy
myCSharp.de - Member



Dabei seit:
Beiträge: 2

Themenstarter:

Wie sendet man in C# Events von einer Klasse in die andere?

beantworten | zitieren | melden

Hallo,

bisher habe ich in C# immer eher kleine Projekte gebastelt ohne mich je näher mit der Architektur auseinander zu setzen. Nun möchte ich das bei meinem nächsten Projekt aber ändern. Eigentlich geht es nur darum, Werte von einem an den PC angeschlossenen Mikrocontroller auf einer GUI anzuzeigen. Der uC sendet dafür in regelmäßigen Abständen die Daten über ein eigenes Protokoll.
Nun habe ich eine Klasse für das Protokoll erstellt, dem ich die Einstellungen aus der GUI für die serielle Kommunikation übergebe (Port, Baudrate), und die sich dann mit einem SerialDataReceivedEventHandler um die Daten und die Dekodierung kümmert. Nun möchte ich die Werte allerdings auch in der GUI anzeigen. Eigentlich komme ich aus der C-Programmierung, da würde ich jetzt eine Callback-Funktion in der Protokoll-Klasse registrieren die immer dann aufgerufen wird, wenn ein (spezieller) Wert übermittelt wurde (ungefähr so)

typedef void dataCallback_t( uint16_t value );

void prc_registerCallback( uint16_t ID, dataCallback_t *callback )
{
   dataCallbackFunctions[ID] = callback;
}

...

if ( dataCallbackFunctions[ID] != NULL )
   dataCallbackFunctions[ID]( receivedValue );

void updateData1( uint16_t value )
{
   ...
}

void registerCallbackFunctions( void )
{
   prc_registerCallback( 1, updateData1 );
   ...
}

Ich habe zwar gesehen, dass es in C# so etwas ähnliches auch gibt (Delegates), habe aber nicht genau verstanden, wie das funktioniert.
Die Frage ist auch: ist das eigentlich der "beste" Weg, oder wie würdet Ihr das machen?

Vielen Dank für Eure Tipps und viele Grüße!
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4092

beantworten | zitieren | melden

Ja, mit C# verwendet man Delegates, bzw. gekapselt als Ereignisse (events), s.a. [FAQ] Eigenen Event definieren / Information zu Events (Ereignis/Ereignisse).
private Nachricht | Beiträge des Benutzers