Erstellen einer Erweiterungsmethode Asynchron

8

Gibt es eine Möglichkeit, wie ich eine Erweiterungsmethode asynchron machen kann?

Ich habe mich schon eine Weile umgeschaut, aber noch nichts gefunden. Werde weiter nachsehen ...

    
Michael Petrotta 09.05.2010, 07:16
quelle

4 Antworten

10

Eine Erweiterungsmethode ist nur eine normale statische Methode, mit syntaktischem Zucker, um sie aufzurufen.

Ermitteln Sie, wie Sie eine normale Methode asynchron machen (z. B. indem Sie eine Aufgabe in .NET 4 starten) und gehen Sie von dort aus weiter.

    
Jon Skeet 09.05.2010, 07:30
quelle
7

Um eine Methode asynchron zu machen, senden Sie der Methode einen Callback und lassen Sie die Methode einen neuen Thread erzeugen.

Ich habe eine kurze Probe in .net 3.5 (vielleicht Jon zeigt uns eine 4.0-Probe):

%Vor%     
David Perlman 09.05.2010 07:30
quelle
4

Ich denke, dass sie versuchen, das zu beheben. Es ist sowieso einfach genug zu arbeiten. Hier ist, wie Sie es tun:

Nehmen wir an, die asynchrone Methode, die Sie in eine Erweiterung einfügen möchten, sieht folgendermaßen aus:

%Vor%

Der VS wird sich nicht darüber aufregen, er wird gut kompilieren. Wenn Sie jedoch versuchen, "MyString".DoAsynchronousWork() aufzurufen, wird ein Fehler ausgegeben, der besagt, dass ein Zeichenfolgenparameter fehlt. Es ignoriert also nicht vollständig die Tatsache, dass es sich um eine Erweiterung handelt, aber es benötigt immer noch den Parameter "this"!

Glücklicherweise ist es einfach, dies zu umgehen. Ersetzen Sie einfach DoAsynchronousWork durch Folgendes:

%Vor%

Ich hoffe, dass sie das beheben, bevor sie .NET 4.5 veröffentlichen, aber wenn nicht, dann ist es zumindest einfach, zu arbeiten. (Ich entdeckte, dass Lambdas zufällig asynchron sein können, aber jetzt kommt es sehr praktisch!)

    
aboveyou00 15.10.2011 21:51
quelle
2

In einer tangential verwandten Anmerkung bietet Reactive Extensions for .NET erweiterte Erweiterungsmethoden, die dabei helfen asynchrone Programmierung. .NET 4 hat auch die Task Parallel Library (auf die Jon angespielt hat), die bei der Parallelisierung helfen kann gemeinsame Vorgänge bei Sammlungen und vereinfacht im Allgemeinen die Verbreitung von Ausnahmen (sogar die Zusammenfassung von Ausnahmen über mehrere Aufgaben hinweg), die Koordination zwischen mehreren parallelen Aufgaben, die ihre Ergebnisse kombinieren müssen, die Unterstützung für Stornierungen und andere komplexe Verhaltensweisen.

    
Dan Bryant 09.05.2010 13:17
quelle

Tags und Links