Event / Message an verschiedene Dialoge senden



  • Hallo zusammen,

    ich habe eine Anwendung bei der in einem Thread abgekoppelt eine Schnittstellenüberwachung stattfindet. Die ankommenden Daten werden dann jeweils an den aktuellen Dialog übergeben.
    Löse ich das mit einem eigenben Event in der KLasse, die als Thread läuft und jeweils in jedem Dialog eine "OnMyEvent" Funktion? Genügt es, wen ich den Event generell auslöse und der aktuelle Dialog greift ihn sich?
    In C++ musste ich die Message an den jeweiligen Dialog senden, wie ist das in C#?

    Vielen Dank
    Ranger



  • Hallo,

    überall dort wo du das Event anhängen willst abonierst du es. - Das ist eigentlich Straight Forward.

    ()
    {
       MyBusinessThread.MyEvent += MyBusinessThread_MyEvent;
    }
    
    void MyBusinessThread_MyEvent(Object sender, EventArgs e)
    [
       // do stuff
    }
    

    Willst du das Event wieder abhängen genügt ein

    MyBusinessThread.MyEvent -= MyBusinessThread_MyEvent;
    

    Damit ist deinem Thread bzw. der Klasse die ihn kapselt vollkommen Schnuppe sein wer da alles auf das Event wartet.

    Zum Auslösen des Events dann einfach:

    if(this.MyEvent != null)
        this.MyEvent(this, myData);
    


  • Das klingt sehr gut. Ich hab auch gleichzeitig beim CodeProject was gefunden, was es sehr detailliert erklärt. Mirt war nur nicht ganz klar, dass alle auf den event reagieren, die sich angehängt5 haben, die also den VErweis auf den Delegate besitzen. Da meine Daten je nach aktuellem Dialog woanders landen sollen, muss ich also entweder bei aktuellen Dialog vorm wechsel

    MyBusinessThread.MyEvent -= MyBusinessThread_MyEvent;
    

    aufrufen und bei der Rückkehr wieder

    MyBusinessThread.MyEvent += MyBusinessThread_MyEvent;
    

    Oder ein anderer Ansatz wäre, für jeden Dialog einen eigenen Event erzeugen, dem Thread mitteilen, welcher Dialog gerade aktuell ist und immer nur den entsprechenden Event auslösen. Was wäre besser bzw. sauberer?

    VG
    Ranger



  • Warum möchtest du da unterscheiden? Lass den Dialog doch ans Event angehängt und aktualisier die Daten unabhängig davon, ob der Dialog gerade im Vordergrund ist oder nicht.

    Das hat doch den Vorteil, das beim Wechsel auf den Dialog sofort aktuelle Daten vorhanden sind.



  • Im Prinzip schon, aber die Daten von der Schnittstelle sind je nach Dialog von unterschiedlicher Bedeutung, somit muss ich das trennen, die Daten dürfen nur in den Dialog für den sie bestimmt sind.

    VG
    Ranger



  • Die Unterscheidung welche Daten relevant sind wird doch im Dialog getroffen?


Anmelden zum Antworten