Laden...

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

Erstellt von Ozzy vor 3 Jahren Letzter Beitrag vor 3 Jahren 448 Views
O
Ozzy Themenstarter:in
2 Beiträge seit 2012
vor 3 Jahren
Wie sendet man in C# Events von einer Klasse in die andere?

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!