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.
Verwandte Abschnitte
Event-based Asynchronous Pattern (EAP) (Ereignisbasiertes asynchrones Muster (EAP))
Beschreibt die asynchrone Programmierung in .NET