Asynchrone Programmierung
In diesem Thema wird die asynchrone Programmierung im Universelle Windows-Plattform (UWP) und deren Darstellung in C#, Microsoft Visual Basic .NET, C++ und JavaScript beschrieben.
Mit asynchroner Programmierung können Sie die Reaktionsfähigkeit Ihrer App bei der Ausführung von zeitintensiven Vorgängen aufrechterhalten. Zum Beispiel muss eine App, die Inhalte aus dem Internet herunterlädt, eventuell 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 Universellen Windows-Plattform das Standardverfahren. JavaScript, C#, Visual Basic und C++ bieten jeweils Sprachunterstützung für asynchrone Methoden.
Asynchrone Programmierung auf der UWP
Viele UWP-Features, z. B . die MediaCapture-APIs und StorageFile-APIs , werden als asynchrone APIs verfügbar gemacht. Gemäß der Konvention enden die Namen asynchroner APIs auf "Async", um anzugeben, dass ein Teil ihrer Ausführung wahrscheinlich erfolgt, nachdem die Steuerung an den Aufrufer zurückgegeben wurde.
Bei der Verwendung asynchroner APIs in einer UWP-App (Universelle Windows-Plattform) 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.
Hier sind einige gängige Aufgaben aufgeführt, für die das Aufrufen 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 UWP-Mustern können Sie möglicherweise die explizite Verwaltung von Threads gänzlich vermeiden. Jede Programmiersprache unterstützt das asynchrone Muster für die UWP auf spezifische Art und Weise:
Programmiersprache | Asynchrone Darstellung |
---|---|
C# | async-Schlüsselwort, await-Operator |
Visual Basic | Asynchrone Schlüsselwort (keyword), Await-Operator |
C++/WinRT | Coroutine und co_await Operator |
C++/CX | task-Klasse, .then-Methode |
JavaScript | zugesagtes Objekt, then-Funktion |
Asynchrone Muster auf der UWP 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 UWP, .NET Framework, C# und Visual Basic verfügen über erweiterte Features, die die asynchrone Funktionsweise aus dem Code abstrahieren. Für .NET und die UWP 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 Aufrufen asynchroner APIs in C# oder Visual Basic.
Asynchrone Muster in UWP mit C++/WinRT
Mit C++/WinRT verwenden Sie Coroutinen und den co_await-Operator . Weitere Informationen und Codebeispiele finden Sie unter Asynchrone Programmierung in C++/WinRT.
Asynchrone Muster in UWP mit C++/CX
In C++/CX basiert die asynchrone Programmierung auf der task-Klasse und deren then-Methode. Die Syntax ist ähnlich aufgebaut wie eine JavaScript-Zusage. Die task-Klasse und die zugehörigen Typen erlauben es außerdem, den Threadkontext abzubrechen und zu verwalten. Weitere Informationen finden Sie unter Asynchrone Programmierung in C++/CX.
Die create_async-Funktion bietet Unterstützung für die Erstellung asynchroner APIs, die von JavaScript oder einer anderen Sprache verwendet werden können, die die UWP unterstützt. Weitere Informationen finden Sie unter Erstellen asynchroner Vorgänge in C++/CX.
Asynchrone Muster in UWP 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 auf der UWP als auch in der Windows-Bibliothek für JavaScript verwendet.
Ein zugesagtes Objekt entspricht einem Wert, der in der Zukunft erfüllt wird. Auf der UWP 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.
Zugehörige Themen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für