IAsyncAction Schnittstelle

Definition

Stellt eine asynchrone Aktion dar. Dies ist der Rückgabetyp für viele Windows 运行时 asynchrone Methoden, die kein Ergebnisobjekt haben, und melden keinen laufenden Fortschritt.

public interface class IAsyncAction : IAsyncInfo
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.FoundationContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(1516535814, 33850, 19881, 134, 91, 157, 38, 229, 223, 173, 123)]
struct IAsyncAction : IAsyncInfo
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.FoundationContract), 65536)]
[Windows.Foundation.Metadata.Guid(1516535814, 33850, 19881, 134, 91, 157, 38, 229, 223, 173, 123)]
public interface IAsyncAction : IAsyncInfo
Public Interface IAsyncAction
Implements IAsyncInfo
Abgeleitet
Attribute
Implementiert

Windows-Anforderungen

Gerätefamilie
Windows 10 (eingeführt in 10.0.10240.0)
API contract
Windows.Foundation.FoundationContract (eingeführt in v1.0)

Hinweise

IAsyncAction ist der Rückgabetyp für alle Windows 运行时 asynchronen Methoden, die kein Ergebnisobjekt oder fortlaufenden Fortschritt kommunizieren. Dies stellt über 300 verschiedene Windows 运行时 APIs dar. APIs, die den Fortschritt melden (aber kein Ergebnis haben) verwenden eine andere Schnittstelle, IAsyncActionWithProgress<TProgress>.

Wenn Sie Methoden verwenden, die IAsyncAction in Ihrem App-Code zurückgeben, greifen Sie in der Regel nicht direkt auf den IAsyncAction-Rückgabewert zu. Das liegt daran, dass Sie fast immer die sprachspezifische erwartete Syntax verwenden. In diesem Fall ist der offensichtliche Rückgabewert der Methode ungültig. Weitere Informationen finden Sie unter Asynchrone Programmierung oder eine der sprachspezifischen Anleitungen zum Windows 运行时 asynchroner Programmierung (Aufrufen asynchroner APIs in C# oder Visual Basic, C++, JavaScript).

IAsyncAction ist auch ein Eingabetyp für einige erweiterte Hilfsprogramm-APIs wie CoreDispatcher.RunAsync und ThreadPool.RunAsync.

Es ist nicht üblich, IAsyncAction direkt zu verwenden, auch wenn Sie keine sprachspezifische erwartete Syntax verwenden. Jede der Sprachen verfügt über Erweiterungspunkte, die im Allgemeinen einfacher zu verwenden sind als die Windows 运行时 Schnittstelle. JavaScript verfügt über WinJS.Promise und dann /fertige Syntax. .NET verfügt über die AsTask-Erweiterungsmethode , und sobald die IAsyncAction in eine Aufgabe konvertiert wird, ist es einfacher zu abbrechen, Benachrichtigungen zum Abschluss abzurufen und so weiter. Für C++/CX können Sie die Aufrufe mithilfe der Concurrency-Laufzeit umschließen (und create_task verwenden). Mit anderen Worten, IAsyncAction kann als Laufzeitebene-Infrastruktur betrachtet werden, die jede der Sprachen als Framework verwendet, um die erwartete Syntax oder asynchrone Programmiermodelle auf eigene Weise zu unterstützen.

Anstatt IAsyncAction zu verwenden, verwenden einige Windows 运行时 asynchrone Methoden benutzerdefinierte Aktionstypen (die möglicherweise über "Operation" anstelle von "Aktion" in ihrem Namen verfügen). Beispielsweise ist SignOutUserOperation ein Windows 运行时 Typ, der IAsyncAction implementiert. Der SignOutUserOperation-Typ wird dann als benutzerdefinierter Rückgabetyp für die SignOutUserAsync-Methode verwendet.

C++/WinRT-Erweiterungsfunktionen

Hinweis

Erweiterungsfunktionen sind in den C++/WinRT-Projektionstypen für bestimmte Windows 运行时 APIs vorhanden. Winrt::Windows::Foundation::IAsyncAction ist beispielsweise der C++/WinRT-Projektionstyp für IAsyncAction. Die Erweiterungsfunktionen sind nicht Teil der Anwendungs-Binärschnittstelle (ABI) der tatsächlichen Windows 运行时-Typen, sodass sie nicht als Mitglieder der Windows 运行时-APIs aufgeführt sind. Sie können sie jedoch innerhalb eines beliebigen C++/WinRT-Projekts aufrufen. Weitere Informationen finden Sie unter C++/WinRT-Funktionen, die Windows 运行时 APIs erweitern.

void get() const;

Wartet synchron, bis die Aktion abgeschlossen ist. Löst eine entsprechende Ausnahme aus, wenn die Aktion abgebrochen wird oder einen Fehlerzustand eingibt. Sie müssen es nicht aus einer singlethreaded Wohnung aufrufen. Weitere Informationen und Codebeispiele zum Aufrufen finden Sie unter "Schreiben einer Coroutine".

AsyncStatus wait_for(TimeSpan const& timeout) const;

Wartet synchron, bis die Aktion abgeschlossen ist, oder für das angegebene Timeout. Gibt den Zustand der IAsyncAction oder AsyncStatus::Gestartet zurück, wenn das Timeout abgelaufen ist. Wenn die Aktion nicht ausgezeitet wurde, rufen Sie GetResults auf, um die Ergebnisse der Aktion abzurufen. Weitere Informationen und Codebeispiele zum Aufrufen von wait_for finden Sie unter Asynchrone Timeouts, die einfach gemacht wurden.

Schnittstellenvererbung

IAsyncAction erbt IAsyncInfo. Typen, die IAsyncAction implementieren, implementieren auch die Schnittstellenmitglieder von IAsyncInfo:

Notizen zu Implementierungen

Wie beim Aufrufen der vorhandenen Methoden gibt es sprachspezifische Methoden zum Definieren asynchroner Methoden, die IAsyncInfo nicht direkt verwenden. Wenn Sie Code mithilfe von .NET schreiben, können Sie eine Aufgabe zurückgeben. Für C++/CX können Sie die Concurrency-Laufzeit verwenden. Wenn Sie jedoch eine Komponente definieren, können Sie Vorgangsaufgabe intern verwenden/, aber Sie müssen eine der Windows 运行时 Schnittstellen für Ihre öffentlichen Methoden zurückgeben. Die sprachspezifischen asynchronen Supporttypen (und viele andere sprachspezifische Typen, die Sie möglicherweise in Code verwenden) können nicht für den öffentlichen Oberflächenbereich einer Windows 运行时-Komponente verwendet werden.

Eigenschaften

Completed

Ruft die Methode ab, die die abgeschlossene Aktion behandelt, oder legt diese fest.

ErrorCode

Ruft eine Zeichenfolge ab, die eine Fehlerbedingung des asynchronen Vorgangs beschreibt.

(Geerbt von IAsyncInfo)
Id

Ruft den Handle des asynchronen Vorgangs ab.

(Geerbt von IAsyncInfo)
Status

Ruft einen Wert ab, der den Status des asynchronen Vorgangs angibt.

(Geerbt von IAsyncInfo)

Methoden

Cancel()

Bricht den asynchronen Vorgang ab.

(Geerbt von IAsyncInfo)
Close()

Schließt den asynchronen Vorgang.

(Geerbt von IAsyncInfo)
GetResults()

Gibt die Ergebnisse der Aktion zurück.

Gilt für:

Siehe auch