IAsyncAction Schnittstelle

Definition

Stellt eine asynchrone Aktion dar. Dies ist der Rückgabetyp für viele asynchrone Windows-Runtime-Methoden (WinRT), die kein Ergebnisobjekt besitzen und keinen laufenden 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 asynchronen WinRT-Methoden, die kein Ergebnisobjekt oder fortlaufenden Fortschritt kommunizieren. Dies stellt mehr als 300 verschiedene WinRT-APIs dar. APIs, die den Fortschritt melden, aber kein Ergebnis haben, verwenden eine andere Schnittstelle, IAsyncActionWithProgress.

Wenn Sie Methoden verwenden, die IAsyncAction im 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, wartende Syntax verwenden. In diesem Fall ist der offensichtliche Rückgabewert der Methode void. Weitere Informationen finden Sie unter Asynchrone Programmierungoder eine der sprachspezifischen Leitfäden für die asynchrone WinRT-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, wartende Syntax verwenden. Jede Der Sprachen weist Erweiterungspunkte auf, die im Allgemeinen einfacher zu verwenden sind als die WinRT-Schnittstelle. JavaScript verfügt über WinJS.Promiseund die then/done Syntax. .NET verfügt über die AsTask Erweiterungsmethode, und sobald die IAsyncAction in eine Taskkonvertiert wird, ist es einfacher, abzubrechen, Benachrichtigungen zum Abschluss zu erhalten usw. Für C++/CX können Sie die Aufrufe mithilfe der Concurrency Runtime (und create_taskverwenden) umschließen. 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 eigene Weise zu unterstützen.

Statt IAsyncActionzu verwenden, verwenden einige asynchrone WinRT-Methoden benutzerdefinierte Aktionstypen (die möglicherweise "Operation" anstelle von "Aktion" in ihrem Namen haben). Beispielsweise ist SignOutUserOperation ein WinRT-Typ, der IAsyncActionimplementiert. Der SignOutUserOperation- Typs wird dann als benutzerdefinierter Aktionsrücklauftyp für die SignOutUserAsync--Methode verwendet.

Wenn Sie über eine Methode verfügen, die eine .NET-Task zurückgibt und eine IAsyncAction zum Übergeben an eine WinRT-API benötigt, können Sie die AsAsyncAction Erweiterungsmethode verwenden.

C++/WinRT-Erweiterungsfunktionen

Anmerkung

Erweiterungsfunktionen sind für die C++/WinRT-Projektionstypen für bestimmte WinRT-APIs vorhanden. Beispielsweise ist winrt::Windows::Foundation::IAsyncAction der C++/WinRT-Projektionstyp für IAsyncAction. Die Erweiterungsfunktionen sind nicht Teil der ABI-Oberfläche (Application Binary Interface) der tatsächlichen WinRT-Typen, daher werden sie nicht als Member der WinRT-APIs aufgeführt. Sie können sie jedoch innerhalb eines beliebigen C++/WinRT-Projekts aufrufen. Siehe C++/WinRT-Funktionen, die Windows-Runtime-APIserweitern.

void get() const;

Wartet synchron, bis die Aktion abgeschlossen ist. Löst eine entsprechende Ausnahme aus, wenn die Aktion abgebrochen wird oder einen Fehlerstatus eingibt. Sie dürfen es nicht aus einer Singlethread-Wohnung aufrufen. Weitere Informationen und Codebeispiele zum Aufrufen von getfinden 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 des IAsyncActionoder AsyncStatus::Started zurück, wenn das Timeout abgelaufen ist. Wenn die Aktion kein Timeout ausgeführt hat, rufen Sie GetResults- auf, um die Ergebnisse der Aktion abzurufen. Weitere Informationen und Codebeispiele, die zeigen, wie wait_foraufgerufen werden, finden Sie unter asynchronen Timeouts, dieleicht gemacht wurden.

Schnittstellenvererbung

IAsyncAction erbt IAsyncInfo-. Typen, die IAsyncAction implementieren, implementieren auch die Schnittstellenmmber von IAsyncInfo:

Hinweise zu Implementierungen

Wie beim Aufrufen der vorhandenen Methoden gibt es sprachspezifische Methoden zum Definieren asynchroner Methoden, die nicht IAsyncInfo- direkt verwenden. Wenn Sie Code mit .NET schreiben, kann ihre Methode ein Taskzurückgeben. Für C++/CX können Sie die Concurrency Runtimeverwenden. Wenn Sie jedoch eine Komponentedefinieren, können Sie Task/task intern verwenden, aber Sie müssen eine der WinRT-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 WinRT-Komponente verwendet werden.

Eigenschaften

Completed

Dient zum Abrufen oder Festlegen des Delegaten, der aufgerufen wird, wenn die Aktion abgeschlossen ist.

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 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:

Weitere Informationen