Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Visual C# 2011 Grundkurs

Invoke Pattern

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Unter bestimmten Umständen kann es beim Auslösen von Events zu Fehlern kommen. Mit dem Invoke Pattern umgehen Sie solche Probleme.
03:04

Transkript

Wenn man in seinem Code ein definiertes Event auslöst, dann muss man mehr Dinge beachten, als man im ersten Moment denkt. Welche das sind, schauen wir uns mal in diesem Video an. Wenn wir so ein Event hier an dieser Stelle auslösen, was wir in einer Klasse definiert haben, an dieser Stelle, dann kann man das auf diese einfache Art und Weise machen. Es gibt aber–– Gerade wenn man später mit Threads arbeitet - da geht es dann um parallele Programmierung - kommt es manchmal zu Zuständen, in denen das Auslösen eines Events zu einem Fehler führen kann. Deswegen gibt es ein sogenanntes empfohlenes "Invoke Pattern". "Invoke Pattern", oder "Pattern" generell, sind bestimmte Muster, wie man Programmieraufgaben lösen sollte und dieses "Invoke Pattern" gibt eben an, wie man ein Event auslösen sollte. Zunächst mal sollte man zu jedem Event eine Methode haben, die dieses Event auslöst. Zunächst sollte dieses Event protected sein, also, dass man es auch aus abgeleiteten Klassen aufrufen kann, sollte es einen void-Rückgabetyp haben. Dann sollte es mit "On" beginnen und dann den Namen des Events tragen. Also "OnClickEvent" - "OnClickedEvent", so. Und dann dieselbe Parameterliste haben wie der Delegat, auf den es zeigt. Dann sollte man, in dieser Methode, sich zunächst eine Referenz auf den Delegaten holen, der durch dieses Event gekapselt wird. Das hat jetzt mit diesen angesprochenen Thread-Problemen zu tun. Akzeptieren Sie das einfach mal so. Sie sollten das immer so machen, damit Sie das Event eben so auslösen können, dass in keiner erdenklichen Situation ein Fehler auftreten könnte. Nachdem wir das gemacht haben, kann jetzt mit dieser Referenz hier das Event oder der Delegat ausgelöst werden. Ich kann also hier hingehen und sagen "if (del != null) - also, wenn an diesem Delegaten überhaupt etwas dranhängt – und dann löst dieser Delegat aus. Hier haben wir einen Event-Handler, das heißt, wir müssen zunächst das auslösende Objekt übergeben. Und als EventArgs benutzen wir EventArgs.Empty, da wir keine EventArgs haben. Also wir haben eine Methode erstellt. Die ist protected, die kann also aus abgeleiteten Klassen und der aktuellen Klasse natürlich aufgerufen werden. Und diese Methode besorgt sich zunächst die Referenz auf diesen Delegaten, der durch das Event gekapselt wird. Und nachdem er sich diese Referenz besorgt hat, haben wir dieses angesprochene Multithreading-Problem nicht mehr. Und dann kann ich eben halt normal verfahren, prüfen, ob jemand überhaupt diesen Delegaten abonniert hat und dort eine Methode drangehangen hat und dann löse ich diesen Delegaten einfach aus. Und anstelle dieser Zahl hier würde ich dann einfach die Methode "OnClickedEvent" auslösen. Und dann würde das Event sicher ausgelöst und man hat keine Probleme mehr damit. Wir haben in diesem Film gesehen, dass es beim Auslösen von Events manchmal zu Problemen kommen kann. Um diese Probleme zu umgehen, haben wir das sogenannte "Invoke Pattern" angewendet. Das heißt, wir haben eine separate Methode geschrieben, die protected ist, also aus abgeleiteten Klassen aufgerufen werden kann. Und in dieser Methode haben wir uns zunächst die Referenz auf diesen Delegaten geholt. Damit haben wir das Multithreading-Problem ausgeschlossen. Und dann haben wir überprüft, ob eine Methode da dranhängt und dann diesen Delegaten ausgeführt. Dieses "Invoke Pattern" sollte man immer benutzen, bei allen Events, um irgendwelche Fehler im Nachhinein zu vermeiden.

Visual C# 2011 Grundkurs

Steigen Sie in die C#-Programmierung ein und lernen Sie sowohl die Grundlagen der Sprache C# als auch die Entwicklungsumgebung Visual Studio 2010 und .NET-Framework kennen.

7 Std. 28 min (81 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Software:
Visual Studio Visual Studio 2010
Exklusiv für Abo-Kunden
Erscheinungsdatum:27.06.2011

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!