Ler em inglês

Compartilhar via


TaskStatus Enumeração

Definição

Representa o estágio atual no ciclo de vida de um Task.

C#
public enum TaskStatus
Herança
TaskStatus

Campos

Canceled 6

A tarefa confirmou o cancelamento lançando um OperationCanceledException com seu próprio CancellationToken enquanto o token estava no estado sinalizado, ou o CancellationToken da tarefa já estava sinalizado antes do início da execução da tarefa. Para obter mais informações, consulte Cancelamento de tarefas.

Created 0

A tarefa foi inicializada, mas ainda não foi agendada.

Faulted 7

A tarefa foi concluída devido a uma exceção sem tratamento.

RanToCompletion 5

A execução da tarefa foi concluída com êxito.

Running 3

A tarefa está em execução, mas ainda não foi concluída.

WaitingForActivation 1

A tarefa está aguardando para ser ativada e agendada internamente pela infraestrutura do .NET.

WaitingForChildrenToComplete 4

A tarefa terminou de ser executada e está aguardando implicitamente a conclusão de tarefas filho anexadas.

WaitingToRun 2

A tarefa foi agendada para execução, mas ainda não começou a ser executada.

Exemplos

O exemplo a seguir cria 20 tarefas que serão executadas em loop até que um contador seja incrementado para um valor de 2 milhões. Quando as primeiras 10 tarefas chegam a 2 milhões, o token de cancelamento é cancelado e todas as tarefas cujos contadores não atingiram 2 milhões são canceladas. Em seguida, o exemplo examina a Task.Status propriedade de cada tarefa para indicar se a tarefa foi concluída com êxito ou cancelada. Para aqueles que foram concluídos, ele exibe o valor retornado pela tarefa.

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

Comentários

A Task.Status propriedade retorna um membro da TaskStatus enumeração para indicar o status atual da tarefa.

Aplica-se a

Produto Versões
.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

Confira também