2010-05-19 4 views

Antwort

6

Delegierte zuerst. Wenn Sie eine deklarieren, erzeugt der Compiler automatisch drei Methoden für die Delegattyp:

  • Invoke (...), die gleichen Argumente wie die Delegatendeklaration unter
  • BeginInvoke (..., AsyncCallback, Objekt) wo ... sind die Argumente erklärten
  • EndInvoke (IAsyncResult)

die Invoke() Methode ruft die Delegierten Ziel synchron, so wie ein einfacher Anruf. Die BeginInvoke() -Methode ist der asynchrone-Aufruf, die Zielmethode wird auf einem Threadpool-Thread ausgeführt. Der Aufruf von EndInvoke() ist erforderlich, nachdem die Methode abgeschlossen ist, um die für den Aufruf zugewiesenen Ressourcen freizugeben und alle Ausnahmebedingungen erneut zu beheben, die den Aufruf möglicherweise abgebrochen haben.

Das .NET-Framework enthält viele Klassen mit einer BeginXxxx() -Methode. Die MSDN-Bibliothek bezeichnet sie als asynchrone Operationen, nicht asynchrone Methoden. Sie starten eine Operation, die asynchron abgeschlossen wird.

Beginnend mit .NET 4.5 und unterstützt von C# Version 5, können die asynchronen Vorgänge, deren Name in Async endet und eine Aufgabe zurückgibt, in einem erwartet Ausdruck aufgerufen werden. Bei Verwendung in einer Methode mit dem Modifikator async. Dies vereinfacht den Umgang mit asynchronen Operationen erheblich, was in WinRT wichtig ist, wo viele allgemeine Operationen asynchron sind.

+5

Dies ist nicht mehr in C# 5 (Visual Studio Dev11 Preview). C# hat die richtige Unterstützung für "asynchrone" Methoden. –

Verwandte Themen