TaskStatus TaskStatus TaskStatus TaskStatus Enum

Définition

Représente l'étape en cours dans le cycle de vie d'une Task.Represents the current stage in the lifecycle of a Task.

public enum class TaskStatus
public enum TaskStatus
type TaskStatus = 
Public Enum TaskStatus
Héritage

Champs

Canceled Canceled Canceled Canceled 6

La tâche a accepté l'annulation en levant OperationCanceledException avec son propre CancellationToken, alors que l'état du jeton était défini comme signalé ou que le CancellationToken de la tâche était déjà signalé avant le début de l'exécution de la tâche.The task acknowledged cancellation by throwing an OperationCanceledException with its own CancellationToken while the token was in signaled state, or the task's CancellationToken was already signaled before the task started executing. Pour plus d’informations, voir Annulation de tâches.For more information, see Task Cancellation.

Created Created Created Created 0

La tâche a été initialisée mais n'a pas encore été planifiée.The task has been initialized but has not yet been scheduled.

Faulted Faulted Faulted Faulted 7

Tâche terminée suite à une exception non gérée.The task completed due to an unhandled exception.

RanToCompletion RanToCompletion RanToCompletion RanToCompletion 5

L’exécution de la tâche s’est terminée avec succès.The task completed execution successfully.

Running Running Running Running 3

La tâche est en cours d'exécution mais n'est pas encore terminée.The task is running but has not yet completed.

WaitingForActivation WaitingForActivation WaitingForActivation WaitingForActivation 1

La tâche attend son activation et sa planification en interne par l'infrastructure .NET Framework.The task is waiting to be activated and scheduled internally by the .NET Framework infrastructure.

WaitingForChildrenToComplete WaitingForChildrenToComplete WaitingForChildrenToComplete WaitingForChildrenToComplete 4

L'exécution de la tâche est terminée et cette dernière attend implicitement la fin des tâches enfants associées.The task has finished executing and is implicitly waiting for attached child tasks to complete.

WaitingToRun WaitingToRun WaitingToRun WaitingToRun 2

L'exécution de la tâche a été planifiée mais n'a pas encore démarré.The task has been scheduled for execution but has not yet begun executing.

Exemples

L’exemple suivant crée 20 tâches qui fait une boucle jusqu'à ce qu’un compteur est incrémenté à une valeur de 2 millions.The following example creates 20 tasks that will loop until a counter is incremented to a value of 2 million. Lorsque les 10 premières tâches atteignent 2 millions, le jeton d’annulation est annulé, et toutes les tâches dont les compteurs n’ont pas atteint 2 millions sont annulées.When the first 10 tasks reach 2 million, the cancellation token is cancelled, and any tasks whose counters have not reached 2 million are cancelled. L’exemple examine ensuite le Task.Status propriété de chaque tâche pour indiquer si la tâche a réussi ou a été annulée.The example then examines the Task.Status property of each task to indicate whether the task has completed successfully or been cancelled. Pour ceux qui s’est terminé, il affiche la valeur retournée par la tâche.For those that have completed, it displays the value returned by the task.

using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      var tasks = new List<Task<int>>();
      var source = new CancellationTokenSource();
      var token = source.Token;
      int completedIterations = 0;

      for (int n = 0; n <= 19; n++)
         tasks.Add(Task.Run( () => { int iterations = 0;
                                     for (int ctr = 1; ctr <= 2000000; ctr++) {
                                         token.ThrowIfCancellationRequested();
                                         iterations++;
                                     }
                                     Interlocked.Increment(ref completedIterations);
                                     if (completedIterations >= 10)
                                        source.Cancel();
                                     return iterations; }, token));

      Console.WriteLine("Waiting for the first 10 tasks to complete...\n");
      try  {
         Task.WaitAll(tasks.ToArray());
      }
      catch (AggregateException) {
         Console.WriteLine("Status of tasks:\n");
         Console.WriteLine("{0,10} {1,20} {2,14:N0}", "Task Id",
                           "Status", "Iterations");
         foreach (var t in tasks)
            Console.WriteLine("{0,10} {1,20} {2,14}",
                              t.Id, t.Status,
                              t.Status != TaskStatus.Canceled ? t.Result.ToString("N0") : "n/a");
      }
   }
}
// The example displays output like the following:
//    Waiting for the first 10 tasks to complete...
//    Status of tasks:
//
//       Task Id               Status     Iterations
//             1      RanToCompletion      2,000,000
//             2      RanToCompletion      2,000,000
//             3      RanToCompletion      2,000,000
//             4      RanToCompletion      2,000,000
//             5      RanToCompletion      2,000,000
//             6      RanToCompletion      2,000,000
//             7      RanToCompletion      2,000,000
//             8      RanToCompletion      2,000,000
//             9      RanToCompletion      2,000,000
//            10             Canceled            n/a
//            11             Canceled            n/a
//            12             Canceled            n/a
//            13             Canceled            n/a
//            14             Canceled            n/a
//            15             Canceled            n/a
//            16      RanToCompletion      2,000,000
//            17             Canceled            n/a
//            18             Canceled            n/a
//            19             Canceled            n/a
//            20             Canceled            n/a
Imports System.Collections.Generic
Imports System.Threading
Imports System.Threading.Tasks

Module Example

   Public Sub Main()
      Dim tasks As New List(Of Task(Of Integer))()
      Dim source As New CancellationTokenSource
      Dim token As CancellationToken = source.Token
      Dim completedIterations As Integer = 0
      
      For n As Integer = 0 To 19
         tasks.Add(Task.Run( Function()
                                Dim iterations As Integer= 0
                                For ctr As Long = 1 To 2000000
                                   token.ThrowIfCancellationRequested()
                                   iterations += 1
                                Next
                                Interlocked.Increment(completedIterations)
                                If completedIterations >= 10 Then source.Cancel()
                                Return iterations
                             End Function, token))
      Next

      Console.WriteLine("Waiting for the first 10 tasks to complete... ")
      Try
         Task.WaitAll(tasks.ToArray())
      Catch e As AggregateException
         Console.WriteLine("Status of tasks:")
         Console.WriteLine()
         Console.WriteLine("{0,10} {1,20} {2,14}", "Task Id",
                           "Status", "Iterations")
         For Each t In tasks
            Console.WriteLine("{0,10} {1,20} {2,14}",
                              t.Id, t.Status,
                              If(t.Status <> TaskStatus.Canceled,
                                 t.Result.ToString("N0"), "n/a"))
         Next
      End Try
   End Sub
End Module
' The example displays output like the following:
'    Waiting for the first 10 tasks to complete...
'    Status of tasks:
'
'       Task Id               Status     Iterations
'             1      RanToCompletion      2,000,000
'             2      RanToCompletion      2,000,000
'             3      RanToCompletion      2,000,000
'             4      RanToCompletion      2,000,000
'             5      RanToCompletion      2,000,000
'             6      RanToCompletion      2,000,000
'             7      RanToCompletion      2,000,000
'             8      RanToCompletion      2,000,000
'             9      RanToCompletion      2,000,000
'            10             Canceled            n/a
'            11             Canceled            n/a
'            12             Canceled            n/a
'            13             Canceled            n/a
'            14             Canceled            n/a
'            15             Canceled            n/a
'            16      RanToCompletion      2,000,000
'            17             Canceled            n/a
'            18             Canceled            n/a
'            19             Canceled            n/a
'            20             Canceled            n/a

Remarques

Le Task.Status propriété retourne un membre de la TaskStatus énumération pour indiquer l’état actuel de la tâche.The Task.Status property returns a member of the TaskStatus enumeration to indicate the task's current status.

S’applique à

Voir aussi