Verwenden der Asynchronous Programming Library

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Verwenden der RTL in geräteübergreifenden Anwendungen


Die RTL stellt die Asynchronous Programming Library (APL) bereit. Die APL verwendet die PPL, um die Unterstützung für asynchrone Operationen in TComponent bereitzustellen. Mit Multithread-Operationen können Sie bereits die Verwaltung Ihrer Anwendungen manuell asynchron anpassen, die APL erleichtert die Aufgabe jedoch wesentlich, da sie die Unterstützung für die asynchrone Programmierung in einer Komponente einbettet.

Überblick über die APL

Die APL stellt die Basisklasse TBaseAsyncResult für die Unterstützung asynchroner Aufrufe bereit. Dadurch wird die Verwaltung der asynchronen Teile Ihrer Anwendung folgendermaßen vereinfacht:

  • Sie können das Verhalten eines asynchronen Aufrufs einer Zielmethode verwalten. Insbesondere können Sie auswählen, wo ein asynchroner Aufruf für die Ausführung eingeplant werden soll:
Hinweis: Wenn Sie nichts angeben, wird der Aufruf standardmäßig synchron im Haupt-Thread ausgeführt.

Während die Zielmethode in einem Hintergrund-Thread ausgeführt wird, kann der ursprüngliche Aufrufer-Thread weiterhin wie üblich parallel für andere synchrone Aufgaben arbeiten. Wenn die Zielmethode die Verarbeitung ihrer Aufgaben beendet hat, gibt sie die Ergebnisse an den Aufrufer-Thread zurück.

Hinweis: Wenn Sie den Aufruf einer Zielmethode in einem Nachkommen des Aufrufer-Threads einplanen, arbeitet diese Zielmethode nicht asynchron, da der Aufrufer-Thread sie vollständig verarbeitet.

Verwenden der APL

Um mit der Verwendung von asynchronen Operationen zu beginnen, müssen Sie:

  • Eine TComponent zur Unterstützung der asynchronen Programmierung einbeziehen.
  • Das Interface IAsyncResult zum Zugreifen auf die Funktionen, die TBaseAsyncResult für die Implementierung der asynchronen Programmierung bereitstellt, verwenden.
  • Die Methode BeginInvoke aufrufen, um einen asynchronen Aufruf der Zielmethode zu starten. Sie können den Thread verwalten, in dem der Aufruf der Zielmethode ausgeführt wird. Der aktuelle Thread arbeitet so lange weiterhin normal, bis IAsyncResult die Ausführung der Zielmethode abschließt und die Ergebnisse der asynchronen Methode an den Aufrufer zurückgibt.
  • Die Methode EndInvoke aufrufen, um zu warten, bis IAsyncResult abgeschlossen ist. Sie müssen EndInvoke für jeden Aufruf von BeginInvoke aufrufen.
  • Sie können eine Callback-Methode in den Aufruf von BeginInvoke einbeziehen. Auf diese Weise wird die Callback-Methode aufgerufen, wenn die Zielmethode beendet wird. Bei diesem Vorgehen können Sie EndInvoke innerhalb der Callback-Methode aufrufen, um die Ergebnisse abzurufen. Ansonsten können Sie EndInvoke im Aufrufer-Thread, wie oben erwähnt, aufrufen.

Siehe auch