Leer en inglés

Compartir vía


TaskStatus Enumeración

Definición

Representa la fase actual del ciclo de vida de una Task.

C#
public enum TaskStatus
Herencia
TaskStatus

Campos

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. Para más información, vea Task Cancellation.

Created 0

La tarea se ha inicializado pero aún no se ha programado.

Faulted 7

La tarea se completó debido a una excepción no controlada.

RanToCompletion 5

La tarea terminó de ejecutarse correctamente.

Running 3

La tarea se está ejecutando pero aún no se ha completado.

WaitingForActivation 1

La tarea está esperando que la infraestructura de .NET la active y programe internamente.

WaitingForChildrenToComplete 4

La tarea ha terminado de ejecutarse y está implícitamente a la espera de que se completen las tareas secundarias asociadas.

WaitingToRun 2

Se ha programado la ejecución de la tarea pero la ejecución aún no ha comenzado.

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. Cuando las primeras 10 tareas llegan a 2 millones, se cancela el token de cancelación y se cancelan las tareas cuyos contadores no han alcanzado 2 millones. A continuación, en el ejemplo se examina la Task.Status propiedad de cada tarea para indicar si la tarea se ha completado correctamente o se ha cancelado. Para aquellos que se han completado, muestra el valor devuelto por la tarea.

C#
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

Comentarios

La Task.Status propiedad devuelve un miembro de la TaskStatus enumeración para indicar el estado actual de la tarea.

Se aplica a

Producto Versiones
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Consulte también