2010-11-18 26 views
4

Hallo Ich möchte das ereignisbasierte asynchrone Muster mit C# implementieren. Die folgende Microsoft-Dokumentation ist sehr hilfreich, aber zu Recht werden die Implementierungsdetails weggelassen.Wie würde ich das ereignisbasierte asynchrone Muster implementieren?

http://msdn.microsoft.com/en-us/library/ms228969.aspx

Was sind meine Optionen, dieses Muster für die Umsetzung? Sollte ich die Delegate.BeginInvoke, ThreadPool.QueueUserWorkItem, neue Thread() -, BackgroundWorker-Klasse oder etwas anderes verwenden?

Ich erstelle eine einfache Code-Bibliothek. Es sollte in einem Windows-Formular, einer Konsolenanwendung oder einem ASP.NET-Kontext verwendet werden können.

Es wäre toll, einen Beispielcode zu sehen.

+0

Die gewünschte Seite verlinkt auf einen Link enthält [ "Wie zu implementieren ..." ] (http://msdn.microsoft.com/en-us/library/e7a34yad.aspx), für weitere Details müssen Sie sagen, was/wie Sie es brauchen. –

Antwort

1

diesen Abschnitt dieses Artikel lesen:

http://msdn.microsoft.com/en-us/library/9hk12d4y.aspx

Das, gesagt ich würde vorschlagen, dass die Technik, die Sie auf Ihrer Anwendung verwenden sollen, hängt, also ohne weitere Details über das, was diese asynchronen Operationen tun werden und wie oft sie angerufen werden und unter welchen Umständen sie genannt werden, kann ich keine Empfehlung geben, was die beste Technik in Ihrer Situation ist.

+0

Die asynchrone Operation wird eine einfache Verarbeitung durchführen. Die asynchrone Operation hämmert keine Ressourcen (db, Dateisystem usw.). Und es wird nicht oft aufgerufen. Das von Ihnen angegebene Beispiel verwendet die AsyncOperationManager-Klasse. Es scheint eine Menge Optionen auf dem Tisch zu geben. Nach welchen Kriterien entscheidest du deinen Ansatz? –

+0

Ich mache die einfachste Sache (in der Regel am einfachsten zu warten), die den Job mit der Leistung erledigt, die ich brauche. Normalerweise Hintergrundarbeiter. –

4

Wenn Sie Event-Based Asynchronous Pattern implementieren möchten, ist AsyncFunc der einfachste Weg zu gehen.

Es vereinfacht dieses Muster dramatisch. Sie müssen sich nicht um ThreadPools, Threads oder BackgroundWorker kümmern. AsyncFunc erledigt alles für Sie. Darüber hinaus ermöglicht Ihnen dieser Ansatz, Ihre Geschäftslogik von einer musterspezifischen Implementierung zu trennen, was die Testbarkeit verbessert.

http://asyncfunc.codeplex.com

Sie den Vergleich der MSDN empfohlen, und AsyncFunc Implementierung der gleichen Komponente finden:

MSDN vs. AsyncFunc

+0

Interessanter Link, thx. – leppie

Verwandte Themen