IAsyncOperation<TResult> Schnittstelle

Definition

Stellt einen asynchronen Vorgang dar, der nach Abschluss ein Ergebnis zurückgibt. Dies ist der Rückgabetyp für viele Windows-Runtime asynchronen Methoden, die Ergebnisse haben, aber keinen Fortschritt melden.

public interface class IAsyncOperation : IAsyncInfo
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.FoundationContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(2680336571, 58438, 17634, 170, 97, 156, 171, 143, 99, 106, 242)]
template <typename TResult>
struct IAsyncOperation : IAsyncInfo
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.FoundationContract), 65536)]
[Windows.Foundation.Metadata.Guid(2680336571, 58438, 17634, 170, 97, 156, 171, 143, 99, 106, 242)]
public interface IAsyncOperation<TResult> : IAsyncInfo
Public Interface IAsyncOperation(Of TResult)
Implements IAsyncInfo

Typparameter

TResult
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

IAsyncOperation<TResult> ist der Rückgabetyp für viele Windows-Runtime asynchronen Methoden, die nach Abschluss ein Ergebnis haben, aber keinen Fortschritt melden. Dies sind über 650 verschiedene Windows-Runtime-APIs. APIs, die den Fortschritt melden (und ein Ergebnis haben), verwenden eine andere Schnittstelle: IAsyncOperationWithProgress<TResult,TProgress>.

Wenn Sie Methoden verwenden, die IAsyncOperation<TResult> (mit einer TResult-spezifischen Einschränkung) in Ihrem App-Code zurückgeben, greifen Sie in der Regel nicht direkt auf den IAsyncOperation-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 der Typ, der als TResult-Parameter angegeben wird. 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).

Es ist nicht üblich, IAsyncOperation<TResult> direkt zu verwenden, auch wenn Sie keine sprachspezifische, erwartbare 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 IAsyncOperation<TResult> in ein Task-TResult<> konvertiert wurde, ist es einfacher, das Ergebnis zu erhalten, abzubrechen, Benachrichtigungen bei Abschluss abzurufen usw. Für C++/CX können Sie die Aufrufe mit der Concurrency Runtime umschließen (und create_task verwenden). Mit anderen Worten, IAsyncOperation<TResult> 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.

Anstelle von IAsyncOperation<TResult> verwenden einige Windows-Runtime asynchrone Methoden benutzerdefinierte Vorgangstypen. DataReaderLoadOperation ist beispielsweise ein Windows-Runtime Typ, der IAsyncOperation mithilfe von uint als Ergebnistyp implementiert. Der DataReaderLoadOperation-Typ wird dann als benutzerdefinierter Vorgangs-/Ergebnistyp für die DataReader.LoadAsync-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.

TResult get() const;

Wartet synchron, bis der Vorgang abgeschlossen ist, und gibt den abgeschlossenen Wert zurück. Löst eine entsprechende Ausnahme aus, wenn der Vorgang 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 der Vorgang abgeschlossen ist oder auf das angegebene Timeout. Gibt den Zustand von IAsyncOperation oder AsyncStatus::Started zurück, wenn das Timeout abgelaufen ist. Wenn für die Aktion kein Timeout auftritt, rufen Sie GetResults auf, um die Ergebnisse des Vorgangs abzurufen. Weitere Informationen und Codebeispiele zum Aufrufen wait_for finden Sie unter Asynchrone Timeouts leicht gemacht.

Schnittstellenvererbung

IAsyncOperation<TResult> erbt IAsyncInfo. Typen, die IAsyncOperation<TResult> 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 IAsyncOperation<TResult> nicht direkt verwenden. Wenn Sie Code mit .NET schreiben, kann Ihre Methode ein Task-TResult<> 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 der Vorgang 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 des Vorgangs zurück.

Gilt für:

Weitere Informationen