Asynchrone Programmierung mithilfe von DelegatenAsynchronous Programming Using Delegates

Delegaten bieten die Möglichkeit, synchrone Methoden in asynchroner Weise aufzurufen.Delegates enable you to call a synchronous method in an asynchronous manner. Wenn ein Delegat synchron aufgerufen wird, ruft die Invoke-Methode die Zielmethode direkt im aktuellen Thread auf.When you call a delegate synchronously, the Invoke method calls the target method directly on the current thread. 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.If the BeginInvoke method is called, the common language runtime (CLR) queues the request and returns immediately to the caller. Die Zielmethode wird in einem Thread asynchron aus dem Threadpool aufgerufen.The target method is called asynchronously on a thread from the thread pool. Der ursprüngliche Thread, der die Anforderung gesendet hat, kann weiterhin parallel zur Zielmethode ausgeführt werden.The original thread, which submitted the request, is free to continue executing in parallel with the target method. Wenn im Aufruf der BeginInvoke-Methode eine Rückrufmethode angegeben war, wird die Rückrufmethode aufgerufen, wenn die Zielmethode beendet wurde.If a callback method has been specified in the call to the BeginInvoke method, the callback method is called when the target method ends. In der Rückrufmethode ruft die EndInvoke-Methode den Rückgabewert und alle Eingabe-/Ausgabe- oder reinen Ausgabeparameter ab.In the callback method, the EndInvoke method obtains the return value and any input/output or output-only parameters. Ist beim Aufrufen von BeginInvoke keine Rückrufmethode angegeben, kann EndInvoke aus dem Thread aufgerufen werden, der BeginInvoke aufgerufen hat.If no callback method is specified when calling BeginInvoke, EndInvoke can be called from the thread that called BeginInvoke.

Wichtig

Compiler sollten Delegatklassen mit den Methoden Invoke, BeginInvoke und EndInvoke ausgeben und dabei die vom Benutzer angegebene Delegatsignatur verwenden.Compilers should emit delegate classes with Invoke, BeginInvoke, and EndInvoke methods using the delegate signature specified by the user. Die Methoden BeginInvoke und EndInvoke sollten als systemeigen dekoriert werden.The BeginInvoke and EndInvoke methods should be decorated as native. Da diese Methoden als systemeigene Methoden gekennzeichnet sind, stellt die CLR die Implementierung automatisch zur Klassenladezeit bereit.Because these methods are marked as native, the CLR automatically provides the implementation at class load time. Das Ladeprogramm stellt sicher, dass die Methoden nicht überschrieben werden.The loader ensures that they are not overridden.

In diesem AbschnittIn This Section

Asynchrones Aufrufen von synchronen MethodenCalling Synchronous Methods Asynchronously
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.Discusses the use of delegates to make asynchronous calls to ordinary methods, and provides simple code examples that show the four ways to wait for an asynchronous call to return.

Ereignisbasiertes asynchrones Muster (EAP)Event-based Asynchronous Pattern (EAP)
Beschreibt asynchrone Programmierung mit .NET Framework.Describes asynchronous programming with the .NET Framework.

Siehe auchSee also