IAsyncAction Interface

Définition

Représente une opération asynchrone. Il s’agit du type de retour pour de nombreuses méthodes asynchrones Windows Runtime qui n’ont pas d’objet de résultat et qui ne signalent pas la progression en cours.

public interface class IAsyncAction : IAsyncInfo
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.FoundationContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(1516535814, 33850, 19881, 134, 91, 157, 38, 229, 223, 173, 123)]
struct IAsyncAction : IAsyncInfo
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.FoundationContract), 65536)]
[Windows.Foundation.Metadata.Guid(1516535814, 33850, 19881, 134, 91, 157, 38, 229, 223, 173, 123)]
public interface IAsyncAction : IAsyncInfo
Public Interface IAsyncAction
Implements IAsyncInfo
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

IAsyncAction est le type de retour pour toutes les méthodes asynchrones Windows Runtime qui ne communiquent pas d’objet de résultat ou la progression continue. Cela constitue plus de 300 API Windows Runtime différentes. Les API qui signalent la progression (mais n’ont pas de résultat) utilisent une autre interface, IAsyncActionWithProgress<TProgress>.

Lorsque vous utilisez des méthodes qui retournent IAsyncAction dans le code de votre application, vous n’accédez généralement pas directement à la valeur de retour IAsyncAction. 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 void. 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).

IAsyncAction est également un type d’entrée pour certaines API d’utilitaire de scénario avancé, telles que CoreDispatcher.RunAsync et ThreadPool.RunAsync.

Il n’est pas courant d’utiliser IAsyncAction directement même si vous n’utilisez pas de syntaxe awaitable 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 IAsyncAction est convertie en tâche, il est plus facile 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, IAsyncAction peut être considérée comme une infrastructure au niveau de l’exécution, que chacun des langages utilise comme infrastructure pour prendre en charge la syntaxe attendable ou les modèles de programmation asynchrone à sa manière.

Au lieu d’utiliser IAsyncAction, certaines méthodes asynchrones Windows Runtime utilisent des types d’actions personnalisées (qui peuvent avoir « Opération » plutôt que « Action » dans leur nom). Par exemple, SignOutUserOperation est un type Windows Runtime qui implémente IAsyncAction. Le type SignOutUserOperation est ensuite utilisé comme type de retour d’action personnalisée pour la méthode SignOutUserAsync .

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.

void get() const;

Attend de façon synchrone que l’action se termine. Lève une exception correspondante si l’action 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’action ou le délai d’expiration spécifié. Retourne l’état de IAsyncAction 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’action. 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

IAsyncAction hérite d’IAsyncInfo. Les types qui implémentent IAsyncAction implémentent également les membres d’interface d’IAsyncInfo :

Remarques aux implémenteurs

Comme pour appeler les méthodes existantes, il existe des moyens spécifiques au langage de définir des méthodes asynchrones qui n’utilisent pas IAsyncInfo directement. Si vous écrivez du code à l’aide de .NET, votre méthode peut retourner une 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é une fois l’action terminée.

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’action.

S’applique à

Voir aussi