Callback-Methode, C#
Muss ich erstellen Sie eine callback-Methode für meine Commit-Methode, nur um zu wissen, wenn es fertig ist.
Also weiß wer, wie zu tun, wie kann ich Sie aufrufen zu können commmit, dann abonnieren Sie den callback-event/Methode, das zu tun andere Sachen, wenn es fertig ist.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Regel in C#, tun Sie dies über eine event. Die gängigste Methode für den Umgang mit diesem wäre die Event-based Asynchronous Programming model. Dies würde definieren Sie Ihre API, durch Konvention, als:
That being said, wenn Sie die Entwicklung für .NET 4, möchten Sie vielleicht überlegen Gestaltung Ihrer Methode um die
Task
oderTask<T>
Klasse, statt. Anstatt einen Rückruf können Sie wieder eineTask
direkt. Das ermöglicht dem Benutzer das erstellen einer Aufgabe Fortsetzung, die ausgeführt wird, wenn die operation abgeschlossen ist. Darüber hinaus werden zukünftige Versionen von C# erlaubt den Benutzern, um die Vorteile der erwarten und async keywords derzeit in der CTP-Abwicklung bilden die Entwicklung zu vereinfachen.Definieren Sie die Commit-Methode zu akzeptieren, die parameter des Typs Action.
Und dann übergeben Sie eine Funktion, die als callback-parameter, um die Commit-Methode.
e.g:
oder haben eine Methode definiert
Können Sie Ereignisse verwenden, aber Sie können sich chaotisch schnell. Also ein callback zu verwenden lassen Sie uns sagen, dass Ihr Commit-Methode die Signatur, die derzeit so aussieht,
Können Sie eine callback einfach mit einer delegieren, sagen wir, Sie akzeptieren einen parameter vom Typ CommitResult in Ihren Rückruf,
Diese können Sie verwenden mehrere Möglichkeiten, die erste ist mit einem lambda-Ausdruck,
oder mit einer anderen Methode,
Müssen Sie die Verwendung von events.
Verwenden Sie folgenden code, der vom aufrufenden Objekt:
Könnte man die Implementierung einer Observer-Muster http://en.wikipedia.org/wiki/Observer_pattern und abonnieren
Könnten Sie einen Delegaten http://msdn.microsoft.com/en-us/library/018hxwa8.aspx zu nennen
Könnten Sie ein Ereignis erstellen, das wird ausgelöst, http://msdn.microsoft.com/en-us/library/awbftdfh.aspx und es aufrufen,
Wahrscheinlich einige andere Wege, das sind die drei aus der Spitze von meinem Kopf.
Vorgeschlagen, die Sie verwenden können, Ereignisse, die hier ein primitives Beispiel:
Den Grund prüfen wir für
null
vonComitted
ist einfach, denn es besteht die Möglichkeit, dass es keine Abonnenten. So, wie Sie Sie abonnieren? Sie brauchen eine Methode, deren Signatur entspricht der desEventHandler
Typ der Veranstaltung, wenn diese Methode feuert es ist Ihr Kennzeichen, dassCommit
abgeschlossen, dann wird die Verwendung einer Instanz des Typs, den Sie brauchen, zu delegieren, Veranstaltung: