IAsyncOperation<TResult> Interface
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Représente une opération asynchrone, qui retourne un résultat à l’achèvement. Il s’agit du type de retour pour de nombreuses méthodes asynchrones Windows Runtime qui ont des résultats, mais qui ne signalent pas la progression.
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
Paramètres de type
- TResult
- 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
IAsyncOperation<TResult> est le type de retour pour de nombreuses méthodes asynchrones Windows Runtime qui ont un résultat à l’achèvement, mais ne signalent pas la progression. Il s’agit de plus de 650 API Windows Runtime différentes. Les API qui signalent la progression (et ont un résultat) utilisent une autre interface, IAsyncOperationWithProgress<TResult,TProgress>.
Lorsque vous utilisez des méthodes qui retournent IAsyncOperation<TResult> (avec une contrainte spécifique À TResult ) dans votre code d’application, vous n’accédez généralement pas directement à la valeur de retour IAsyncOperation. 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 IAsyncOperation<TResult> directement même si vous n’utilisez pas une syntaxe awaitable propre 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 IAsyncOperation<TResult> 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, IAsyncOperation<TResult> 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 asynchrones à sa manière.
Au lieu d’utiliser IAsyncOperation<TResult>, certaines méthodes asynchrones Windows Runtime utilisent des types d’opérations personnalisés. Par exemple, DataReaderLoadOperation est un type Windows Runtime qui implémente IAsyncOperation en utilisant uint comme type de résultat. Le type DataReaderLoadOperation est ensuite utilisé comme type d’opération/résultat personnalisé pour la méthode DataReader.LoadAsync .
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 de l’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 façon 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 des exemples de code montrant comment appeler get, consultez Écrire une coroutine.
AsyncStatus wait_for(TimeSpan const& timeout) const;
Attend de façon synchrone la fin de l’opération ou le délai d’expiration spécifié. Retourne l’état de IAsyncOperation 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 des exemples de code montrant comment appeler wait_for, consultez Délais d’expiration asynchrones simplifiés.
Héritage de l'interface
IAsyncOperation<TResult> hérite de IAsyncInfo. Les types qui implémentent IAsyncOperation<TResult> implémentent également les membres d’interface d’IAsyncInfo :
- Méthode Cancel
- Close , méthode
- ErrorCode, propriété
- Propriété Id
- Propriété Status
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 directement IAsyncOperation<TResult> . 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 propres à la langue (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) |
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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour