IAsyncActionWithProgress<TProgress> Schnittstelle

Definition

Stellt eine asynchrone Aktion dar, die Statusaktualisierungen an Aufrufer melden kann. Dies ist der Rückgabetyp für alle Windows-Runtime asynchronen Methoden, die kein Ergebnisobjekt haben, aber melden Sie den Fortschritt an Rückruflistener.

public interface class IAsyncActionWithProgress : IAsyncInfo
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.FoundationContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(527282776, 59395, 18593, 149, 70, 235, 115, 83, 57, 136, 132)]
template <typename TProgress>
struct IAsyncActionWithProgress : IAsyncInfo
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.FoundationContract), 65536)]
[Windows.Foundation.Metadata.Guid(527282776, 59395, 18593, 149, 70, 235, 115, 83, 57, 136, 132)]
public interface IAsyncActionWithProgress<TProgress> : IAsyncInfo
Public Interface IAsyncActionWithProgress(Of TProgress)
Implements IAsyncInfo

Typparameter

TProgress
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)

Beispiele

Beispiel : C++/WinRT-Code , der die Behandlung des Progress-Ereignisses veranschaulicht, finden Sie unter Delegattypen für asynchrone Aktionen und Vorgänge.

Hinweise

IAsyncActionWithProgress TProgress<> ist der Rückgabetyp für alle Windows-Runtime asynchronen Methoden, die kein Ergebnisobjekt kommunizieren, aber eine App aktivieren, um den Fortschritt der Aktion zu überprüfen. Es gibt nicht fast so viele dieser Methoden, die IAsyncAction verwenden. IAsyncAction APIs melden keinen Fortschritt und haben kein Ergebnis.

Wenn Sie Methoden verwenden, die IAsyncActionWithProgress TProgress<> 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 Leitfäden für Windows-Runtime asynchrone Programmierung (Aufrufen asynchroner APIs in C# oder Visual Basic, C++, JavaScript).

Es ist nicht üblich, IAsyncActionWithProgress TProgress<> 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-Runtime-Schnittstelle. JavaScript verfügt über WinJS.Promise und dann/fertig mit der Syntax für "Progress ". .NET verfügt über die AsTask-Erweiterungsmethoden, und sobald die IAsyncActionWithProgress TProgress<> in eine Aufgabe konvertiert wird, ist es einfacher, abzubrechen, Benachrichtigungen zum Abschluss zu erhalten, IProgress<T> usw. zu verwenden. Bei C++/CX können Sie die Aufrufe mithilfe der Parallelitätslaufzeit umschließen (und create_task verwenden). Mit anderen Worten: IAsyncActionWithProgress TProgress<> kann als Infrastruktur auf Laufzeitebene betrachtet werden, die jede der Sprachen als Framework verwendet, um die erwartete Syntax oder asynchrone Programmiermodelle auf eigene Weise zu unterstützen.

Wenn Sie den Fortschritt in .NET-Code behandeln möchten, verwenden Sie die AsTask-Signatur , die in einer Erweiterungsverwendung einen einzelnen IProgress-Referenzparameter aufweist. (In dieser Verwendung ist die Statuseinheit bereits eingeschränkt und entspricht der IAsyncActionWithProgress-Methode, die Sie verwenden.) Stellen Sie ein Objekt bereit, das IProgress implementiert, und ihre Report-Methodenimplementierung wird jedes Mal aufgerufen, wenn die Windows-Runtime-Methode eine Statusbenachrichtigung meldet.

Um den Fortschritt der Aktion zu überwachen (wenn die oben beschriebenen sprachspezifischen Techniken nicht verwendet werden), legen Sie die Progress-Eigenschaft fest, und geben Sie den Namen einer Methode an, die den AsyncActionProgressHandler TProgressHandler<TProgress> Delegate implementiert.

C++/WinRT-Erweiterungsfunktionen

Hinweis

Erweiterungsfunktionen sind in den C++/WinRT-Projektionstypen für bestimmte Windows-Runtime 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 Windows-Runtime Typen, sodass sie nicht als Mitglieder der Windows-Runtime-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-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 einen Fehlerzustand eingibt. Sie dürfen es nicht aus einer Einzelthread-Wohnung aufrufen. Weitere Informationen und Codebeispiele zum Aufrufen finden Sie unter "Schreiben eines Coroutine".

AsyncStatus wait_for(TimeSpan const& timeout) const;

Wartet synchron, bis die Aktion abgeschlossen ist, oder auf das angegebene Timeout. Gibt den Status des IAsyncActionWithProgress oder AsyncStatus::Started zurück, wenn das Timeout abgelaufen ist. Wenn die Aktion nicht timeout war, 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 leicht gemacht wurden.

Schnittstellenvererbung

IAsyncActionWithProgress TProgress<> erbt IAsyncInfo. Typen, die IAsyncActionWithProgress TProgress<> implementieren, implementieren auch die Schnittstellenelemente von IAsyncInfo:

Hinweise zu Implementierungen

Wie beim Aufrufen der vorhandenen Methoden gibt es sprachspezifische Methoden zum Definieren asynchroner Methoden, die IAsyncActionWithProgress TProgress<> nicht direkt verwenden. Wenn Sie Code mithilfe von .NET schreiben, kann Ihre Methode eine Aufgabe zurückgeben. Für C++/CX können Sie die Parallelitätslaufzeit verwenden. Wenn Sie jedoch eine Komponente definieren, können SieVorgangsaufgabe/ intern verwenden, aber Sie müssen eine der Windows-Runtime 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-Runtime Komponente verwendet werden.

Eigenschaften

Completed

Dient zum Abrufen oder Festlegen der Methode, die die abgeschlossene Benachrichtigung der Aktion behandelt.

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)
Progress

Ruft die Rückrufmethode ab, die Statusbenachrichtigung empfängt, oder legt sie fest.

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