IAsyncOperation<TResult> Schnittstelle

Definition

Stellt einen asynchronen Vorgang dar, der nach Abschluss ein Ergebnis zurückgibt. Dies ist der Rückgabetyp für viele asynchrone Windows-Runtime-Methoden (WinRT), die Ergebnisse aufweisen, 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 asynchrone WinRT-Methoden, die nach Abschluss ein Ergebnis haben, aber keinen Fortschritt melden. Dies stellt mehr als 650 verschiedene WinRT-APIs dar. 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 spezifische 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, wartende Syntax verwenden. In diesem Fall ist der offensichtliche Rückgabewert der Methode der Typ, der als TResult-Parameter bereitgestellt wird. 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-).

Es ist nicht üblich, IAsyncOperation<TResult> 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 IAsyncOperation<TResult> in eine Aufgabe<TResult>konvertiert wird, ist es einfacher, das Ergebnis abzurufen, 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, IAsyncOperation<TResult> 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 IAsyncOperation<TResult>zu verwenden, verwenden einige asynchrone WinRT-Methoden benutzerdefinierte Vorgangstypen. Beispielsweise ist DataReaderLoadOperation- ein WinRT-Typ, der IAsyncOperation mithilfe von uint als Ergebnistyp implementiert. Der DataReaderLoadOperation Typs wird dann als benutzerdefinierter Vorgangs-/Ergebnistyp für die DataReader.LoadAsync--Methode verwendet.

Wenn Sie über eine Methode verfügen, die eine .NET-Task<T> zurückgibt und eine IAsyncOperation<TResult> zum Übergeben an eine WinRT-API benötigt, können Sie die AsAsyncOperation 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.

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 gibt einen Fehlerstatus ein. 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 auf den Abschluss des Vorgangs oder auf das angegebene Timeout. Gibt den Status des IAsyncOperationoder AsyncStatus::Started zurück, wenn das Timeout abgelaufen ist. Wenn die Aktion kein Timeout ausgeführt hat, rufen Sie GetResults- auf, um die Ergebnisse des Vorgangs abzurufen. Weitere Informationen und Codebeispiele, die zeigen, wie wait_foraufgerufen werden, finden Sie unter asynchronen Timeouts, dieleicht gemacht wurden.

Schnittstellenvererbung

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

Gilt für:

Weitere Informationen