IAsyncAction Schnittstelle

Definition

Stellt eine asynchrone Aktion dar. Dies ist der Rückgabetyp für viele Windows-Runtime asynchrone Methoden, die kein Ergebnisobjekt haben und keinen fortlaufenden Fortschritt melden.

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-Runtime asynchronen Methoden, die kein Ergebnisobjekt oder den fortlaufenden Fortschritt kommunizieren. Dies sind über 300 verschiedene Windows-Runtime-APIs. 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 normalerweise nicht direkt auf den IAsyncAction-Rückgabewert zu. Das liegt daran, dass Sie fast immer die sprachspezifische, erwartbare Syntax verwenden. In diesem Fall ist der scheinbare Rückgabewert der Methode void. Weitere Informationen finden Sie unter Asynchrone Programmierung oder eine der sprachspezifischen Anleitungen zum Windows-Runtime asynchroner Programmierung (Aufrufen asynchroner APIs in C# oder Visual Basic, C++, JavaScript).

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

Es ist nicht üblich, IAsyncAction direkt zu verwenden, auch wenn Sie keine sprachspezifische, abwartbare Syntax verwenden. Jede der Sprachen verfügt über Erweiterungspunkte, die im Allgemeinen einfacher zu verwenden sind als die Windows-Runtime-Schnittstelle. JavaScript verfügt über WinJS.Promise und die Syntax "then/done" . .NET verfügt über die AsTask-Erweiterungsmethode , und sobald die IAsyncAction in einen Task konvertiert wurde, ist es einfacher, abzubrechen, Benachrichtigungen bei Abschluss zu erhalten usw. Für C++/CX können Sie die Aufrufe mit der Concurrency Runtime umschließen (und create_task verwenden). Mit anderen Worten, IAsyncAction kann als Infrastruktur auf Laufzeitebene betrachtet werden, die jede der Sprachen als Framework verwendet, um die erwartbare Syntax oder asynchrone Programmiermodelle auf ihre eigene Weise zu unterstützen.

Anstatt IAsyncAction zu verwenden, verwenden einige Windows-Runtime asynchronen Methoden benutzerdefinierte Aktionstypen (die möglicherweise "Operation" und nicht "Action" im Namen enthalten). SignOutUserOperation ist beispielsweise ein Windows-Runtime Typ, der IAsyncAction implementiert. Der Typ SignOutUserOperation wird dann als benutzerdefinierter Aktionsrückgabetyp für die SignOutUserAsync-Methode verwendet.

C++/WinRT-Erweiterungsfunktionen

Hinweis

Erweiterungsfunktionen sind für die C++/WinRT-Projektionstypen für bestimmte Windows-Runtime-APIs vorhanden. Winrt::Windows::Foundation::IAsyncAction ist beispielsweise der C++/WinRT-Projektionstyp für IAsyncAction. Die Erweiterungsfunktionen sind nicht Teil der ABI-Oberfläche (Application Binary Interface) der tatsächlichen Windows-Runtime-Typen, daher werden sie nicht als Member der Windows-Runtime-APIs aufgeführt. Sie können sie jedoch in jedem C++/WinRT-Projekt aufrufen. Weitere Informationen finden Sie unter C++/WinRT-Funktionen, die Windows-Runtime-APIs erweitern.

void get() const;

Wartet synchron, bis die Aktion abgeschlossen ist. Löst eine entsprechende Ausnahme aus, wenn die Aktion abgebrochen wird oder in einen Fehlerzustand wechselt. Sie dürfen es nicht aus einem Singlethread-Apartment aufrufen. Weitere Informationen und Codebeispiele zum Aufrufen von get finden Sie unter Schreiben einer Coroutine.

AsyncStatus wait_for(TimeSpan const& timeout) const;

Wartet synchron, bis die Aktion abgeschlossen ist oder auf das angegebene Timeout. Gibt den Status von IAsyncAction oder AsyncStatus::Started zurück, wenn das Timeout verstrichen ist. Wenn für die Aktion kein Timeout ausgeführt wurde, rufen Sie GetResults auf, um die Ergebnisse der Aktion abzurufen. Weitere Informationen und Codebeispiele zum Aufrufen wait_for finden Sie unter Asynchrone Timeouts leicht gemacht.

Schnittstellenvererbung

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

Hinweise für Implementierer

Wie beim Aufrufen der vorhandenen Methoden gibt es sprachspezifische Möglichkeiten, asynchrone Methoden zu definieren, die IAsyncInfo nicht direkt verwenden. Wenn Sie Code mithilfe von .NET schreiben, kann Ihre Methode einen Task zurückgeben. Für C++/CX können Sie die Concurrency Runtime verwenden. Wenn Sie jedoch eine Komponente definieren, können Sie task/intern verwenden, aber Sie müssen eine der Windows-Runtime Schnittstellen für Ihre öffentlichen Methoden zurückgeben. Die sprachspezifischen asynchronen Unterstützungstypen (und viele andere sprachspezifische Typen, die Sie normalerweise im Code verwenden) können nicht für den öffentlichen Oberflächenbereich einer Windows-Runtime Komponente verwendet werden.

Eigenschaften

Completed

Ruft den Delegat ab, der aufgerufen wird, wenn die Aktion abgeschlossen ist, oder legt diesen fest.

ErrorCode

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

(Geerbt von IAsyncInfo)
Id

Ruft das Handle des asynchronen Vorgangs ab.

(Geerbt von IAsyncInfo)
Status

Ruft einen Wert ab, der die 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:

Weitere Informationen