Asynchrone Programmierung mithilfe von Delegaten

Delegaten bieten die Möglichkeit, synchrone Methoden in asynchroner Weise aufzurufen. Wenn ein Delegat synchron aufgerufen wird, ruft die Invoke-Methode die Zielmethode direkt im aktuellen Thread auf. Wird die BeginInvoke-Methode aufgerufen, fügt die Common Language Runtime (CLR) die Anforderung in die Warteschlange ein und kehrt sofort zum Aufrufer zurück. Die Zielmethode wird in einem Thread asynchron aus dem Threadpool aufgerufen. Der ursprüngliche Thread, der die Anforderung gesendet hat, kann weiterhin parallel zur Zielmethode ausgeführt werden. Wenn im Aufruf der BeginInvoke-Methode eine Rückrufmethode angegeben war, wird die Rückrufmethode aufgerufen, wenn die Zielmethode beendet wurde. In der Rückrufmethode ruft die EndInvoke-Methode den Rückgabewert und alle Eingabe-/Ausgabe- oder reinen Ausgabeparameter ab. Ist beim Aufrufen von BeginInvoke keine Rückrufmethode angegeben, kann EndInvoke aus dem Thread aufgerufen werden, der BeginInvoke aufgerufen hat.

Wichtig

Compiler sollten Delegatklassen mit den Methoden Invoke, BeginInvoke und EndInvoke ausgeben und dabei die vom Benutzer angegebene Delegatsignatur verwenden. Die Methoden BeginInvoke und EndInvoke sollten als systemeigen dekoriert werden. Da diese Methoden als systemeigene Methoden gekennzeichnet sind, stellt die CLR die Implementierung automatisch zur Klassenladezeit bereit. Das Ladeprogramm stellt sicher, dass die Methoden nicht überschrieben werden.

In diesem Abschnitt

Asynchrones Aufrufen von synchronen Methoden
Erläutert die Verwendung von Delegaten zum asynchronen Aufrufen normaler Methoden und bietet einfache Codebeispiele, in denen die vier Möglichkeiten zum Warten auf die Rückgabe asynchroner Aufrufe gezeigt werden.

Event-based Asynchronous Pattern (EAP) (Ereignisbasiertes asynchrones Muster (EAP))
Beschreibt die asynchrone Programmierung in .NET

Weitere Informationen