Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Enumeración TaskStatus

 

Publicado: octubre de 2016

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

Espacio de nombres:   System.Threading.Tasks
Ensamblado:  mscorlib (en mscorlib.dll)

public enum TaskStatus

Nombre de miembroDescripción
Canceled

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 obtener más información, consulte el artículo sobre la cancelación de tareas.

Created

La tarea se ha programado para ejecución pero aún no se ha iniciado.

Faulted

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

RanToCompletion

La tarea terminó de ejecutarse correctamente.

Running

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

WaitingForActivation

La tarea está a la espera de ser activada y programada internamente por la infraestructura de .NET Framework.

WaitingForChildrenToComplete

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

WaitingToRun

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

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

En el ejemplo siguiente se crea 20 tareas que se reproducción hasta que se incrementa un contador en un valor de 2 millones. Cuando las 10 primeras tareas llegar a millones de 2, el token de cancelación se cancela y se cancelan todas las tareas cuyos contadores no hayan alcanzado 2 millones. El ejemplo a continuación, examina el Task.Status propiedad de cada tarea para indicar si la tarea ha finalizado correctamente o se ha cancelado. Para aquellos que se han completado, muestra el valor devuelto por la tarea.

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

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 4.0
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 5.0
Windows Phone Silverlight
Disponible desde 8.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar: