IAsyncAction 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 action asynchrone. Il s’agit du type de retour pour de nombreuses méthodes asynchrones Windows Runtime (WinRT) 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 WinRT qui ne communiquent pas d’objet de résultat ou de progression en cours. Cela constitue plus de 300 API WinRT différentes. Les API qui signalent la progression, mais qui n’ont pas de résultat utilisent une autre interface, IAsyncActionWithProgress.
Lorsque vous utilisez des méthodes qui retournent IAsyncAction
dans votre code d’application, vous n’accédez généralement pas directement à la valeur de retour IAsyncAction
. C’est parce que 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 de programmation asynchrone, ou l’un des guides spécifiques au langage pour la programmation asynchrone WinRT (Appeler des API asynchrones en C# ou Visual Basic, C++, JavaScript).
IAsyncAction
est également un type d’entrée pour certaines API utilitaires avancées 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 généralement plus faciles à utiliser que l’interface WinRT. JavaScript a WinJS.Promiseet la syntaxe then
/done
. .NET a la méthode d’extension AsTask et une fois le IAsyncAction
converti en tâche, il est plus facile d’annuler, d’obtenir une notification à l’achèvement, et ainsi de suite. Pour C++/CX, vous pouvez encapsuler les appels à l’aide du runtime d’accès concurrentiel IAsyncAction
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 de leur propre manière.
Au lieu d’utiliser IAsyncAction
, certaines méthodes asynchrones WinRT utilisent des types d’actions personnalisés (qui peuvent avoir « Opération » plutôt que « Action » dans leur nom). Par exemple, SignOutUserOperation est un type WinRT qui implémente IAsyncAction
. Le type SignOutUserOperation est ensuite utilisé comme type de retour d’action personnalisé pour la méthode SignOutUserAsync.
Si vous avez une méthode qui retourne un Task
.NET et que vous avez besoin d’un IAsyncAction
pour passer à une API WinRT, vous pouvez utiliser la méthode d’extension AsAsyncAction.
Fonctions d’extension C++/WinRT
Note
Les fonctions d’extension existent sur les types de projection C++/WinRT pour certaines API WinRT. 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 WinRT réels. Elles ne sont donc pas répertoriées en tant que membres des API WinRT. Mais vous pouvez les appeler à partir de n’importe quel projet C++/WinRT. Consultez fonctions C++/WinRT qui étendent les API Windows Runtime.
void get() const;
Attend que l’action se termine de façon synchrone. Lève une exception correspondante si l’action est annulée ou entre 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 uncoroutine .
AsyncStatus wait_for(TimeSpan const& timeout) const;
Attend de façon synchrone que l’action se termine ou pour le délai d’expiration spécifié. Retourne l’état du IAsyncAction
, ou AsyncStatus ::Started si le délai d’attente 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 des exemples de code montrant comment appeler wait_for
, consultez délais d’attente asynchrones facilitent.
Héritage de l’interface
IAsyncAction
hérite IAsyncInfo . Les types qui implémentent IAsyncAction
implémentent également les membres d’interface de IAsyncInfo :
Remarques sur les implémenteurs
Comme pour appeler les méthodes existantes, il existe des façons 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 Task
/task
en interne, mais vous devez retourner l’une des interfaces WinRT pour vos méthodes publiques. Les types de prise en charge asynchrone spécifiques au langage (et de nombreux autres types spécifiques au langage que vous pouvez utiliser conventionnellement dans le code) ne peuvent pas être utilisés pour la surface publique d’un composant WinRT.
Propriétés
Completed |
Obtient ou définit le délégué appelé lorsque l’action se termine. |
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 l’état 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
- IAsyncInfo
- IAsyncActionWithProgress<TProgress>
- de programmation asynchrone