Partager via


IAsyncOperationWithProgress<TResult,TProgress> Interface

Définition

Représente une opération asynchrone qui peut signaler les mises à jour de progression aux appelants. Il s’agit du type de retour pour de nombreuses méthodes asynchrones Windows Runtime qui ont des résultats et qui signalent également la progression.

public interface class IAsyncOperationWithProgress : IAsyncInfo
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.FoundationContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(3050321623, 58007, 18831, 186, 96, 2, 137, 231, 110, 35, 221)]
template <typename TResult, typename TProgress>
struct IAsyncOperationWithProgress : IAsyncInfo
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.FoundationContract), 65536)]
[Windows.Foundation.Metadata.Guid(3050321623, 58007, 18831, 186, 96, 2, 137, 231, 110, 35, 221)]
public interface IAsyncOperationWithProgress<TResult,TProgress> : IAsyncInfo
Public Interface IAsyncOperationWithProgress(Of TResult, TProgress)
Implements IAsyncInfo

Paramètres de type

TResult
TProgress
Dérivé
Attributs
Implémente

Configuration requise pour Windows

Famille d’appareils
Windows 10 (introduit dans 10.0.10240.0)
API contract
Windows.Foundation.FoundationContract (introduit dans v1.0)

Remarques

IAsyncOperationWithProgress TResult,TProgress<est le type de retour pour de nombreuses méthodes asynchrones> Windows Runtime qui ont un résultat à l’achèvement, et prennent également en charge les notifications qui signalent la progression (auxquelles les appelants peuvent s’abonner en affectant un rappel pour Progress). Il s’agit d’environ 100 API Windows Runtime différentes. Les API qui ne signalent pas de progression (mais qui ont un résultat) utilisent une autre interface, IAsyncOperation<TResult>.

Lorsque vous utilisez des méthodes qui retournent IAsyncOperationWithProgress<TResult,TProgress> (avec une contrainte spécifique À TResult ) dans votre code d’application, vous n’accédez généralement pas directement à la valeur de retour IAsyncOperationWithProgress. En effet, vous utilisez presque toujours la syntaxe awaitable propre au langage. Dans ce cas, la valeur de retour apparente de la méthode est le type fourni en tant que paramètre TResult . Pour plus d’informations, consultez Programmation asynchrone ou l’un des guides spécifiques au langage pour Windows Runtime la programmation asynchrone (Appeler des API asynchrones en C# ou Visual Basic, C++, JavaScript).

Il n’est pas courant d’utiliser IAsyncOperationWithProgress<TResult,TProgress> directement, même si vous n’utilisez pas de syntaxe d’attente spécifique au langage. Chacun des langages a des points d’extension qui sont généralement plus faciles à utiliser que l’interface Windows Runtime. JavaScript a WinJS.Promise et la syntaxe then/done . .NET a la méthode d’extension AsTask, et une fois que IAsyncOperationWithProgress<TResult,TProgress> est converti en un TResult> de tâche<, il est plus facile d’obtenir le résultat, d’annuler, d’obtenir une notification à l’achèvement, etc. Pour C++/CX, vous pouvez encapsuler les appels à l’aide du runtime d’accès concurrentiel (et utiliser create_task). En d’autres termes, IAsyncOperationWithProgress TResult,TProgress<peut être considéré comme une infrastructure au niveau du runtime, que chacun des langages> utilise comme infrastructure pour prendre en charge la syntaxe attendue ou les modèles de programmation asynchrone à sa manière.

Plus précisément, si vous souhaitez gérer la progression dans le code .NET, utilisez la signature AsTask qui, dans l’utilisation d’une extension, a un seul paramètre de référence IProgress . (Dans cette utilisation, l’unité de progression est déjà contrainte et correspond à la méthode IAsyncOperationWithProgress que vous utilisez.) Fournissez un objet qui implémente IProgress, et votre implémentation de méthode Report est appelée chaque fois que la méthode Windows Runtime signale une notification de progression.

Pour surveiller la progression de l’action (si vous n’utilisez pas les techniques spécifiques au langage décrites ci-dessus), définissez la propriété Progress , en lui fournissant le nom d’une méthode qui implémente le délégué AsyncOperationProgressHandler<TResult,TProgress> .

Fonctions d’extension C++/WinRT

Notes

Des fonctions d’extension existent sur les types de projection C++/WinRT pour certaines API Windows Runtime. Par exemple, winrt ::Windows ::Foundation ::IAsyncAction est le type de projection C++/WinRT pour IAsyncAction. Les fonctions d’extension ne font pas partie de la surface d’interface binaire d’application (ABI) des types Windows Runtime réels. Elles ne sont donc pas répertoriées en tant que membres des API Windows Runtime. Mais vous pouvez les appeler à partir de n’importe quel projet C++/WinRT. Consultez Fonctions C++/WinRT qui étendent Windows Runtime API.

TResult get() const;

Attend de manière synchrone que l’opération se termine et retourne la valeur terminée. Lève une exception correspondante si l’opération est annulée ou entre dans un état d’erreur. Vous ne devez pas l’appeler à partir d’un appartement à thread unique. Pour plus d’informations et pour obtenir des exemples de code montrant comment appeler get, consultez Écrire une coroutine.

AsyncStatus wait_for(TimeSpan const& timeout) const;

Attend de manière synchrone la fin de l’opération ou le délai d’attente spécifié. Retourne l’état de IAsyncOperationWithProgress ou AsyncStatus ::Started si le délai d’expiration s’est écoulé. Si l’action n’a pas expiré, appelez GetResults pour obtenir les résultats de l’opération. Pour plus d’informations et pour obtenir des exemples de code montrant comment appeler wait_for, consultez Délais d’expiration asynchrones simplifiés.

Héritage de l'interface

IAsyncOperationWithProgress<TResult,TProgress> hérite d’IAsyncInfo. Les types qui implémentent IAsyncOperationWithProgress<TResult,TProgress> implémentent également les membres d’interface d’IAsyncInfo :

Remarques aux implémenteurs

Comme pour appeler les méthodes existantes, il existe des méthodes spécifiques au langage pour définir des méthodes asynchrones qui n’utilisent pas IAsyncOperationWithProgress<TResult,TProgress> directement. Si vous écrivez du code à l’aide de .NET, votre méthode peut retourner un résultat<de tâche>. Pour C++/CX, vous pouvez utiliser le runtime d’accès concurrentiel. Toutefois, si vous définissez un composant, vous pouvez utiliser tâche de/tâche en interne, mais vous devez retourner l’une des interfaces Windows Runtime pour vos méthodes publiques. Les types de prise en charge asynchrone spécifiques au langage (et de nombreux autres types spécifiques à la langue que vous pouvez utiliser conventionnellement dans le code) ne peuvent pas être utilisés pour la surface d’exposition publique d’un composant Windows Runtime.

Propriétés

Completed

Obtient ou définit le délégué appelé à la fin de l’opération.

ErrorCode

Obtient une chaîne qui décrit une condition d’erreur de l’opération asynchrone.

(Hérité de IAsyncInfo)
Id

Obtient le handle de l’opération asynchrone.

(Hérité de IAsyncInfo)
Progress

Obtient ou définit la méthode qui gère les notifications de progression.

Status

Obtient une valeur qui indique le status de l’opération asynchrone.

(Hérité de IAsyncInfo)

Méthodes

Cancel()

Annule l’opération asynchrone.

(Hérité de IAsyncInfo)
Close()

Ferme l’opération asynchrone.

(Hérité de IAsyncInfo)
GetResults()

Retourne les résultats de l’opération.

S’applique à

Voir aussi