Warum Events nutzen?

8

Ich verstehe, wie Ereignisse in C # funktionieren (bin ein fairer Neuling in diesem Bereich). Ich versuche zu verstehen, warum wir Ereignisse verwenden.

Kennen Sie eine gut codierte / architekturbasierte App, die Ereignisse verwendet?

** Rest der Nachricht abgeschnitten und als Antwort eingefügt **

    
Dave Mateer 09.04.2009, 03:00
quelle

5 Antworten

8

Um ein konkretes normales Weltbeispiel zu liefern ....

Sie haben ein Formular, das Formular hat ein Listenfeld. Es gibt eine schöne, fröhliche Klasse für die Listbox. Wenn der Benutzer etwas aus der Listbox auswählt, möchten Sie andere Dinge im Formular wissen und ändern.

Ohne Ereignisse:

Sie leiten von der Listbox ab und überschreiben die Dinge, um sicherzustellen, dass Ihr Elternteil das Formular ist, das Sie erwarten. Sie überschreiben eine ListSelected-Methode oder etwas, das andere Dinge auf Ihrem übergeordneten Formular bearbeitet.

Mit Ereignissen: Ihr Formular überwacht das Ereignis, um anzuzeigen, dass ein Benutzer etwas ausgewählt hat, und bearbeitet andere Elemente im Formular.

Der Unterschied besteht darin, dass Sie im Fall ohne Ereignisse eine Einzweckklasse erstellt haben und eine, die fest an die Umgebung gebunden ist, in der sie sich befindet. Im Fall mit Ereignissen der Code, der Ihr Formular bearbeitet ist in Ihrem Formular lokalisiert, und die Listbox ist nur, na ja, eine Listbox.

    
Darren Clark 09.04.2009, 05:23
quelle
6

Sie können das Beobachtermuster in C # mit Ereignissen und Delegaten implementieren.

Hier ist ein Link zu einem Artikel, der solche beschreibt: Ссылка

alt text http://dofactory.com/Patterns/Diagrams/observer.gif

    
Andreas Grech 09.04.2009 03:36
quelle
5

* Dies war früher im Fragenkörper

Was sehr nützlich wäre, ist ein nicht triviales Beispiel für eine App, die Ereignisse verwendet (rate, dass es auch beim Testen hilft?)

Die bisherigen Gedanken sind:

Warum Veranstaltungen nutzen oder veröffentlichen / abonnieren?

Eine beliebige Anzahl von Klassen kann benachrichtigt werden, wenn ein Ereignis ausgelöst wird.

Die abonnierenden Klassen müssen nicht wissen, wie das Metronom funktioniert (siehe Code unten), und das Metronom muss nicht wissen, was es als Reaktion auf das Ereignis tun wird.

Der Publisher und die Abonnenten werden vom Delegierten entkoppelt. Dies ist sehr wünschenswert, da es für einen flexibleren und robusteren Code sorgt. Das Metronom kann ändern, wie es Zeit erkennt, ohne eine der abonnierenden Klassen zu unterbrechen. Die abonnierenden Klassen können ändern, wie sie auf Zeitänderungen reagieren, ohne das Metronom zu unterbrechen. Die beiden Klassen drehen sich unabhängig voneinander, was einen leichter wartbaren Code ermöglicht.

%Vor%

Vollständiger Artikel Ich schreibe auf meiner Website: Ссылка

nb ein Teil dieses Textes stammt von Ссылка

Prost.

    
Dave Mateer 09.04.2009 05:12
quelle
1

Auf der grundlegendsten konzeptuellen Ebene sind Ereignisse der Grund dafür, dass der Computer auf das reagiert, was Sie tun, anstatt dass Sie darauf reagieren müssen, was der Computer tut. Wenn Sie vor Ihrem PC mit mehreren ausgeführten Anwendungen (einschließlich des Betriebssystems) und mehreren anklickbaren Objekten in jedem Kontext, aus denen Sie auswählen können, sitzen, werden Ereignisse ausgeführt, wenn Sie eines auswählen und alle beteiligten Elemente können ordnungsgemäß benachrichtigt.

Auch wenn Sie die Maus bewegen, wird ein Strom von Ereignissen ausgelöst (z. B. um den Cursor zu bewegen).

    
dkretz 09.04.2009 03:27
quelle
1

Sie können Ihre eigenen Möglichkeiten zum Senden / Empfangen von Ereignissen und zum Abonnieren / Abbestellen von Ereignisquellen erstellen. Aber die Sprache gibt Ihnen einen einfachen / standardmäßigen Weg, dies zu tun, so dass es ein guter Grund ist, Sprach- "Ereignisse" anstelle Ihrer eigenen Ereignistechnik zu verwenden.

Auch die Verwendung der Sprache "events" ermöglicht es Ihnen, alle möglichen coolen Dinge zu tun, indem Sie Reflektionen verwenden, weil sie standardisiert sind.

Warum sollte überhaupt eine Event-Technik verwendet werden? Es gibt alle Arten von Beispielen aus dem wirklichen Leben, in denen dies recht nützlich und einfacher ist, Ereignisse zu verwenden. Ereignisse sind in ihrer Nützlichkeit fast ähnlich wie Windows-Nachrichten.

    
Philibert Perusse 09.04.2009 03:19
quelle

Tags und Links