Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte.
Traduction
Source

Task, classe

Représente une opération asynchrone.

Espace de noms :  System.Threading.Tasks
Assembly :  mscorlib (dans mscorlib.dll)

[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true, 
	ExternalThreading = true)]
public class Task : IAsyncResult, IDisposable

Le type Task expose les membres suivants.

  NomDescription
Méthode publiqueTask(Action)Initialise un nouveau Task avec l'action spécifiée.
Méthode publiqueTask(Action, CancellationToken)Initialise un nouveau Task avec l'action spécifiée et CancellationToken.
Méthode publiqueTask(Action, TaskCreationOptions)Initialise un nouveau Task avec l'action spécifiée et les options de création.
Méthode publiqueTask(Action<Object>, Object)Initialise un nouveau Task avec l'action et l'état spécifiés.
Méthode publiqueTask(Action, CancellationToken, TaskCreationOptions)Initialise un nouveau Task avec l'action spécifiée et les options de création.
Méthode publiqueTask(Action<Object>, Object, CancellationToken)Initialise un nouveau Task avec l'action, l'état et les options spécifiés.
Méthode publiqueTask(Action<Object>, Object, TaskCreationOptions)Initialise un nouveau Task avec l'action, l'état et les options spécifiés.
Méthode publiqueTask(Action<Object>, Object, CancellationToken, TaskCreationOptions)Initialise un nouveau Task avec l'action, l'état et les options spécifiés.
Début

  NomDescription
Propriété publiqueAsyncStateObtient l'objet d'état fourni lorsque le Task a été créé ou null, si aucun n'a été fourni.
Propriété publiqueCreationOptionsObtient TaskCreationOptions utilisé pour créer cette tâche.
Propriété publiqueMembre statiqueCurrentIdRetourne l'ID unique du Task en cours d'exécution.
Propriété publiqueExceptionObtient le AggregateException qui a provoqué la fin prématurée de Task. Si le Task s'est achevé avec succès ou n'a pas encore levé d'exception, le résultat retourné sera Null.
Propriété publiqueMembre statiqueFactoryFournit l'accès aux méthodes de fabrique pour la création d'instances Task et Task<TResult>.
Propriété publiqueIdObtient un ID unique pour cette instance Task.
Propriété publiqueIsCanceledIndique si cette instance Task s'est exécutée avec succès suite à une annulation.
Propriété publiqueIsCompletedIndique si ce Task s'est achevé.
Propriété publiqueIsFaultedIndique si Task s'est achevé suite à une exception non gérée.
Propriété publiqueStatusObtient le TaskStatus de cette tâche.
Début

  NomDescription
Méthode publiqueContinueWith(Action<Task>)Crée une continuation qui s'exécute lorsque le Task cible se termine.
Méthode publiqueContinueWith(Action<Task>, CancellationToken)Crée une continuation qui s'exécute lorsque le Task cible se termine.
Méthode publiqueContinueWith(Action<Task>, TaskContinuationOptions)Crée une continuation qui s'exécute en fonction du TaskContinuationOptions spécifié.
Méthode publiqueContinueWith(Action<Task>, TaskScheduler)Crée une continuation qui s'exécute lorsque le Task cible se termine.
Méthode publiqueContinueWith(Action<Task>, CancellationToken, TaskContinuationOptions, TaskScheduler)Crée une continuation qui s'exécute en fonction du TaskContinuationOptions spécifié.
Méthode publiqueContinueWith<TResult>(Func<Task, TResult>)Crée une continuation qui s'exécute lorsque le Task cible se termine.
Méthode publiqueContinueWith<TResult>(Func<Task, TResult>, CancellationToken)Crée une continuation qui s'exécute lorsque le Task cible se termine.
Méthode publiqueContinueWith<TResult>(Func<Task, TResult>, TaskContinuationOptions)Crée une continuation qui s'exécute en fonction de la condition spécifiée dans continuationOptions.
Méthode publiqueContinueWith<TResult>(Func<Task, TResult>, TaskScheduler)Crée une continuation qui s'exécute lorsque le Task cible se termine.
Méthode publiqueContinueWith<TResult>(Func<Task, TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)Crée une continuation qui s'exécute en fonction de la condition spécifiée dans continuationOptions.
Méthode publiqueDispose()Libère toutes les ressources utilisées par l'instance actuelle de la classe Task.
Méthode protégéeDispose(Boolean)Supprime le Task, en libérant toutes ses ressources non managées.
Méthode publiqueEquals(Object)Détermine si l'Object spécifié est égal à l'Object en cours. (Hérité de Object.)
Méthode protégéeFinalize Autorise un objet à tenter de libérer des ressources et d'exécuter d'autres opérations de nettoyage avant qu'il ne soit récupéré par l'opération garbage collection. (Hérité de Object.)
Méthode publiqueGetHashCodeSert de fonction de hachage pour un type particulier. (Hérité de Object.)
Méthode publiqueGetTypeObtient le Type de l'instance actuelle. (Hérité de Object.)
Méthode protégéeMemberwiseCloneCrée une copie superficielle de l'objet Object actif. (Hérité de Object.)
Méthode publiqueRunSynchronously()Exécute de façon synchrone le Task sur le TaskScheduler actuel.
Méthode publiqueRunSynchronously(TaskScheduler)Exécute de façon synchrone le Task sur le TaskScheduler fourni.
Méthode publiqueStart()Démarre le Task, en le planifiant pour l'exécution selon le TaskScheduler actuel.
Méthode publiqueStart(TaskScheduler)Démarre le Task, en le planifiant pour l'exécution selon le TaskScheduler spécifié.
Méthode publiqueToStringRetourne une chaîne qui représente l'objet actuel. (Hérité de Object.)
Méthode publiqueWait()Attend la fin de l'exécution de Task.
Méthode publiqueWait(CancellationToken)Attend la fin de l'exécution de Task.
Méthode publiqueWait(Int32)Attend la fin de l'exécution de Task.
Méthode publiqueWait(TimeSpan)Attend la fin de l'exécution de Task.
Méthode publiqueWait(Int32, CancellationToken)Attend la fin de l'exécution de Task.
Méthode publiqueMembre statiqueWaitAll(Task[])Attend la fin de l'exécution de tous les objets Task fournis.
Méthode publiqueMembre statiqueWaitAll(Task[], Int32)Attend la fin de l'exécution de tous les objets Task fournis.
Méthode publiqueMembre statiqueWaitAll(Task[], CancellationToken)Attend la fin de l'exécution de tous les objets Task fournis.
Méthode publiqueMembre statiqueWaitAll(Task[], TimeSpan)Attend la fin de l'exécution de tous les objets Task fournis.
Méthode publiqueMembre statiqueWaitAll(Task[], Int32, CancellationToken)Attend la fin de l'exécution de tous les objets Task fournis.
Méthode publiqueMembre statiqueWaitAny(Task[])Attend la fin de l'exécution de l'un des objets Task fournis.
Méthode publiqueMembre statiqueWaitAny(Task[], Int32)Attend la fin de l'exécution de l'un des objets Task fournis.
Méthode publiqueMembre statiqueWaitAny(Task[], CancellationToken)Attend la fin de l'exécution de l'un des objets Task fournis.
Méthode publiqueMembre statiqueWaitAny(Task[], TimeSpan)Attend la fin de l'exécution de l'un des objets Task fournis.
Méthode publiqueMembre statiqueWaitAny(Task[], Int32, CancellationToken)Attend la fin de l'exécution de l'un des objets Task fournis.
Début

  NomDescription
Implémentation d'interface explicitePropriété privéeIAsyncResult.AsyncWaitHandleObtient un WaitHandle qui peut être utilisé en attendant la fin de la tâche.
Implémentation d'interface explicitePropriété privéeIAsyncResult.CompletedSynchronouslyObtient une indication précisant si l'opération s'est terminée de manière synchrone.
Début

Les instances Task peuvent être créées de diverses façons. L'approche la plus commune est l'utilisation de la propriété Factory du type Task pour récupérer une instance TaskFactory qui peut être utilisée pour créer des tâches pour plusieurs utilisations. Par exemple, la méthode StartNew de la fabrique peut être utilisée pour créer un Task qui exécute une action :

// C#
var t = Task.Factory.StartNew(() => DoAction());

' Visual Basic
 Dim t = Task.Factory.StartNew(Function() DoAction())

Pour des exemples plus complets, consultez Parallélisme des tâches (bibliothèque parallèle de tâches).

La classe Task fournit également des constructeurs qui initialisent la tâche mais qui ne la planifient pas pour l'exécution. Pour des raisons de performances, la méthode StartNew de TaskFactory doit être le mécanisme recommandé pour la création et la planification des tâches de calcul ; pour les scénarios où la création et la planification doivent être séparées, les constructeurs peuvent être utilisés et la méthode Start de la tâche peut ensuite être employée pour planifier cette dernière en vue de son exécution ultérieure.

Pour les opérations qui retournent des valeurs, la classe Task<TResult> doit être utilisée.

Pour les développeurs de débogueur

Pour les développeurs qui implémentent des débogueurs personnalisés, plusieurs membres internes et privés de la classe Task peuvent être utiles (ils peuvent varier d'une version à une autre). Le champ m_taskId Int32 sert de magasin de stockage pour la propriété Id. L'accès direct à ce champ depuis un débogueur peut être plus efficace qu'accéder à la même valeur via la méthode d'accesseur Get (le compteur s_taskIdCounter Int32 est utilisé pour récupérer l'ID disponible suivant pour une tâche) de la propriété. De la même façon, le champ m_stateFlags Int32 stocke les informations à propos de l'étape de cycle de vie actuel de la tâche, informations également accessibles via la propriété Status. Le champ m_action System.Object stocke une référence au délégué de la tâche, et le champ m_stateObject System.Object stocke l'état asynchrone passé à la tâche par le développeur. Enfin, pour les débogueurs qui analysent des frames de pile, la méthode InternalWait prend en charge un marqueur potentiel dans le cas où une opération d'attente est lancée pour une tâche.

RemarqueRemarque

L'attribut HostProtectionAttribute appliqué à ce type ou membre a la valeur de propriété Resources suivante : Synchronization | ExternalThreading. HostProtectionAttribute n'affecte pas les applications bureautiques (qui sont généralement démarrées en double-cliquant sur une icône, en tapant une commande ou en entrant une URL dans un navigateur). Pour plus d'informations, consultez la classe HostProtectionAttribute ou Attributs de programmation et de protection des hôtes SQL Server.

L'exemple suivant montre comment démarrer une tâche en utilisant la méthode StartNew() :


using System;
using System.Threading;
using System.Threading.Tasks;

class StartNewDemo
{
    // Demonstrated features:
    //		Task ctor()
    // 		Task.Factory
    //		Task.Wait()
    //		Task.RunSynchronously()
    // Expected results:
    // 		Task t1 (alpha) is created unstarted.
    //		Task t2 (beta) is created started.
    //		Task t1's (alpha) start is held until after t2 (beta) is started.
    //		Both tasks t1 (alpha) and t2 (beta) are potentially executed on threads other than the main thread on multi-core machines.
    //		Task t3 (gamma) is executed synchronously on the main thread.
    // Documentation:
    //		http://msdn.microsoft.com/en-us/library/system.threading.tasks.task_members(VS.100).aspx
    static void Main()
    {
        Action<object> action = (object obj) =>
        {
            Console.WriteLine("Task={0}, obj={1}, Thread={2}", Task.CurrentId, obj.ToString(), Thread.CurrentThread.ManagedThreadId);
        };

        // Construct an unstarted task
        Task t1 = new Task(action, "alpha");

        // Cosntruct a started task
        Task t2 = Task.Factory.StartNew(action, "beta");

        // Block the main thread to demonstate that t2 is executing
        t2.Wait();

        // Launch t1 
        t1.Start();

        Console.WriteLine("t1 has been launched. (Main Thread={0})", Thread.CurrentThread.ManagedThreadId);

        // Wait for the task to finish.
        // You may optionally provide a timeout interval or a cancellation token
        // to mitigate situations when the task takes too long to finish.
        t1.Wait();

        // Construct an unstarted task
        Task t3 = new Task(action, "gamma");

        // Run it synchronously
        t3.RunSynchronously();

        // Although the task was run synchrounously, it is a good practice to wait for it which observes for 
        // exceptions potentially thrown by that task.
        t3.Wait();
    }


}


.NET Framework

Pris en charge dans : 4

.NET Framework Client Profile

Pris en charge dans : 4

Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Tous les membres de Task, sauf Dispose, sont thread-safe et peuvent être utilisés simultanément à partir de plusieurs threads.

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft