Asynchrone Programmierung (Windows-Runtime-Apps)

Asynchrone Programmierung (Windows-Runtime-Apps)

[ Dieser Artikel richtet sich an Windows 8.x- und Windows Phone 8.x-Entwickler, die Windows-Runtime-Apps schreiben. Wenn Sie für Windows 10 entwickeln, finden Sie weitere Informationen unter neueste Dokumentation]

Mit asynchroner Programmierung können Sie die Reaktionsfähigkeit Ihrer App bei der Ausführung von zeitintensiven Vorgängen aufrechterhalten. Beispielsweise muss eine App, die Inhalte aus dem Internet herunterlädt, vielleicht mehrere Sekunden warten, bis die Inhalte übermittelt sind. Wenn Sie die Inhalte mit einer synchronen Methode für den UI-Thread abrufen, ist die App so lange blockiert, bis der Methodenaufruf beendet ist. In diesem Zeitraum reagiert die App nicht auf Benutzerinteraktionen, und da sie nicht zu antworten scheint, ist der Benutzer möglicherweise verärgert. Die asynchrone Programmierung eignet sich hier sehr viel besser, denn die App wird weiterhin ausgeführt und reagiert auch auf die UI, während ein anderer Vorgang noch abgeschlossen wird.

Für Methoden, deren Aufruf möglicherweise recht lange dauert, ist die asynchrone Programmierung in der Windows-Runtime das Standardverfahren. JavaScript, C#, Visual Basic und C++/CX unterstützen allesamt asynchrone Methoden.

Asynchrone Programmierung in der Windows-Runtime

Viele Windows-Runtime-Features wie die MediaCapture-APIs und die StorageFile-APIs werden als asynchrone APIs bereitgestellt. Die Namen asynchroner APIs enden üblicherweise auf "Async", um anzugeben, dass ein Teil der Ausführung erfolgt, nachdem die API aufgerufen wurde.

Bei der Verwendung asynchroner APIs in einer Windows-Runtime-App führt der Code einheitlich nicht blockierende Aufrufe aus. Bei Implementierung dieser asynchronen Muster in Ihren API-Definitionen können Aufrufer den Code auf vorhersagbare Weise nachvollziehen und verwenden.

Nachfolgend finden Sie eine Reihe häufiger Aufgaben, für die der Aufruf asynchroner Windows-Runtime-APIs erforderlich ist.

  • Anzeigen von Meldungsdialogfeldern

  • Verwenden des Dateisystems (Anzeigen einer Dateiauswahl)

  • Senden und Empfangen von Daten an das/aus dem Internet

  • Verwenden von Sockets, Streams, Konnektivität

  • Verwenden von Terminen, Kontakten, Kalendern

  • Verwenden von Dateitypen (wie etwa Öffnen von PDF-Dateien oder Decodieren von Bild- oder Medienformaten)

  • Interagieren mit einem Gerät oder Dienst

Mit asynchronen Windows-Runtime-APIs müssen Sie Threads nicht ausdrücklich verwalten und nicht direkt mit der zugrunde liegenden Implementierung interagieren.

Jede Programmiersprache unterstützt das asynchrone Muster für die Windows-Runtime auf spezifische Art und Weise:

ProgrammierspracheAsynchrone Darstellung
JavaScript zugesagtes Objekt, then- Funktion
C#async-Schlüsselwort, await-Operator
Visual BasicAsync-Schlüsselwort, Await-Operator
C++/CXtask-Klasse, .then-Methode

 

Asynchrone Muster in Windows-Runtime-Apps mit JavaScript

In JavaScript basiert die asynchrone Programmierung auf dem vorgeschlagenen Common JS Promises/A-Standard. Dabei werden von asynchronen Methoden zugesagte Objekte zurückgegeben. Zusagen werden sowohl in der Windows-Runtime als auch der Windows-Bibliothek für JavaScript verwendet.

Ein zugesagtes Objekt entspricht einem Wert, der in der Zukunft erfüllt wird. In der Windows-Runtime werden zugesagte Objekte über Factoryfunktionen abgerufen. Die Namen solcher Funktionen enden üblicherweise auf "Async".

Asynchrone Funktionen können häufig genauso einfach wie konventionelle Funktionen aufgerufen werden. Anders ist nur, dass Sie die then- oder done-Methode verwenden, um die Handler für Ergebnisse oder Fehler zuzuweisen und den Vorgang zu starten.

Asynchrone Muster in Windows-Runtime-Apps mit C# und Visual Basic

Ein typischer Code-Abschnitt in C# oder Visual Basic wird synchron ausgeführt. Das heißt, dass die Ausführung einer Zeile beendet wird, bevor die nächste Zeile ausgeführt wird. Es gab bereits Microsoft .NET-Programmierungsmodelle für eine asynchrone Ausführung, aber der entsprechende Code überbetont die Funktionsweise des asynchronen Codes als solcher gegenüber der Aufgabe, die mit dem Code ausgeführt werden soll. Die Compiler für Windows-Runtime, .NET Framework, C# und Visual Basic verfügen über erweiterte Features, die die asynchrone Funktionsweise aus dem Code abstrahieren. Für .NET und die Windows-Runtime können Sie somit asynchronen Code schreiben, der sich auf die Aufgaben und nicht auf die Ausführung als solche konzentriert. Ihr asynchroner Code wird sich nicht großartig von synchronem Code unterscheiden. Weitere Informationen finden Sie unter Schnellstart: Aufrufen asynchroner APIs in C# oder Visual Basic.

Asynchrone Muster in Windows-Runtime-Apps mit C++

In C++/CX basiert die asynchrone Programmierung auf der task class und ihrer then method. Die Syntax ist ähnlich aufgebaut wie eine JavaScript-Zusage. Die task class und die zugehörigen Typen erlauben es außerdem, den Threadkontext abzubrechen und zu verwalten. Weitere Informationen finden Sie unter Asynchrone Programmierung in C++.

Die create_async function unterstützt Sie bei der Erstellung asynchroner APIs, die über JavaScript oder eine andere Sprache mit Unterstützung für Windows-Runtime verwendet werden können. Weitere Informationen finden Sie unter Erstellen asynchroner Vorgänge in C++.

Verwandte Themen

Asynchrone Programmierung in JavaScript
Schnellstart: Aufrufen asynchroner APIs in C# oder Visual Basic
Asynchrone Programmierung mit async und await (C# und Visual Basic)
Szenarien für Reversi-Beispielfeatures: Asynchroner Code

 

 

Anzeigen:
© 2016 Microsoft