7 Stimmen

Was ist der Unterschied zwischen einem asynchronen Delegaten und einer asynchronen Methode?

Was ist der Unterschied zwischen einem asynchronen Delegaten und einer asynchronen Methode?

Jemand hat mir gesagt, dass sie in C# anders sind, aber ich dachte, sie wären dasselbe.

6voto

Hans Passant Punkte 894572

Die Delegierten zuerst. Wenn Sie einen Delegaten deklarieren, erzeugt der Compiler automatisch drei Methoden für den Delegatentyp:

  • Invoke(...), mit denselben Argumenten wie die Delegatendeklaration
  • BeginInvoke(..., AsyncCallback, object) wobei ... die angegebenen Argumente sind
  • EndInvoke(IAsyncResult)

Die Methode Invoke() ruft das Delegatenziel synchron auf, genau wie ein einfacher Aufruf. Die BeginInvoke()-Methode ist die asynchrone Aufruf läuft die Zielmethode in einem Thread-Pool-Thread. Der EndInvoke()-Aufruf ist nach Abschluss der Methode erforderlich, um die für den Aufruf zugewiesenen Ressourcen freizugeben und um eine Ausnahme, die den Aufruf abgebrochen haben könnte, erneut zu melden.

Das .NET Framework enthält viele Klassen, die eine BeginXxxx()-Methode haben. Die MSDN Library bezeichnet sie als asynchrone Vorgänge und nicht asynchrone Methoden. Sie starten einen Vorgang, der asynchron abgeschlossen wird.

Ab .NET 4.5 und unterstützt von C# Version 5 können die asynchronen Operationen, deren Name auf Async endet und eine Task zurückgibt, in einer warten Sie Ausdruck. Bei Verwendung in einer Methode, die die asynchron Modifikator. Dies vereinfacht den Umgang mit asynchronen Operationen erheblich, was in WinRT wichtig ist, wo viele gängige Operationen asynchron sind.

1voto

mdb Punkte 50584

Zu den Unterschieden und einer weiteren Diskussion siehe Asynchrone Methoden und asynchrone Delegierte genau hier auf SO.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X