TaskStatus TaskStatus TaskStatus TaskStatus Enum

Definición

Representa la fase actual del ciclo de vida de un objeto Task.Represents the current stage in the lifecycle of a Task.

public enum class TaskStatus
public enum TaskStatus
type TaskStatus = 
Public Enum TaskStatus
Herencia

Campos

Canceled Canceled Canceled Canceled 6

La tarea confirmó la cancelación iniciando una excepción OperationCanceledException con su propio CancellationToken mientras el token estaba en estado señalado o el CancellationToken de la tarea ya se había señalado antes de que la tarea empezara a ejecutarse.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. Para más información, vea Task Cancellation.For more information, see Task Cancellation.

Created Created Created Created 0

La tarea se ha inicializado pero aún no se ha programado.The task has been initialized but has not yet been scheduled.

Faulted Faulted Faulted Faulted 7

La tarea se completó debido a una excepción no controlada.The task completed due to an unhandled exception.

RanToCompletion RanToCompletion RanToCompletion RanToCompletion 5

La tarea terminó de ejecutarse correctamente.The task completed execution successfully.

Running Running Running Running 3

La tarea se está ejecutando pero aún no se ha completado.The task is running but has not yet completed.

WaitingForActivation WaitingForActivation WaitingForActivation WaitingForActivation 1

La tarea está a la espera de ser activada y programada internamente por la infraestructura de .NET Framework.The task is waiting to be activated and scheduled internally by the .NET Framework infrastructure.

WaitingForChildrenToComplete WaitingForChildrenToComplete WaitingForChildrenToComplete WaitingForChildrenToComplete 4

La tarea ha terminado de ejecutarse y está implícitamente a la espera de que se completen las tareas secundarias adjuntas.The task has finished executing and is implicitly waiting for attached child tasks to complete.

WaitingToRun WaitingToRun WaitingToRun WaitingToRun 2

Se ha programado la ejecución de la tarea pero la ejecución aún no ha comenzado.The task has been scheduled for execution but has not yet begun executing.

Ejemplos

En el ejemplo siguiente se crean 20 tareas que se repetirán hasta que un contador se incremente a un valor de 2 millones.The following example creates 20 tasks that will loop until a counter is incremented to a value of 2 million. Cuando las 10 primeras tareas alcanzan 2 millones, se cancela el token de cancelación y se cancelan las tareas cuyos contadores no hayan llegado a 2 millones.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. A continuación, el ejemplo examina Task.Status la propiedad de cada tarea para indicar si la tarea se ha completado correctamente o se ha cancelado.The example then examines the Task.Status property of each task to indicate whether the task has completed successfully or been cancelled. Para los que se han completado, muestra el valor devuelto por la tarea.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

Comentarios

La Task.Status propiedad devuelve un miembro de la TaskStatus enumeración para indicar el estado actual de la tarea.The Task.Status property returns a member of the TaskStatus enumeration to indicate the task's current status.

Se aplica a

Consulte también: