Compartilhar via


Task.Start Método

Definição

Inicia o Task.

Sobrecargas

Start()

Inicia o Task, agendando-o para execução no TaskScheduler atual.

Start(TaskScheduler)

Inicia o Task, agendando-o para execução no TaskScheduler especificado.

Start()

Inicia o Task, agendando-o para execução no TaskScheduler atual.

public:
 void Start();
public void Start ();
member this.Start : unit -> unit
Public Sub Start ()

Exceções

A instância Task foi descartada.

O Task não está em um estado válido para ser iniciado. Ele pode já ter sido iniciado, executado ou cancelado ou pode ter sido criado de forma a não dar suporte ao agendamento direto.

Exemplos

O exemplo a seguir chama o Task(Action) construtor para instanciar um novo Task objeto que exibe sua ID de tarefa e ID de thread gerenciado e, em seguida, executa um loop. Em seguida, ele chama o Start método para executar a tarefa. Como esse é um aplicativo de console, a chamada para o Wait método é necessária para impedir que o aplicativo seja encerrado antes que a tarefa termine a execução.

using System;
using System.Threading;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      var t = new Task( () => { Console.WriteLine("Task {0} running on thread {1}",
                                                  Task.CurrentId, Thread.CurrentThread.ManagedThreadId);
                                for (int ctr = 1; ctr <= 10; ctr++)
                                   Console.WriteLine("   Iteration {0}", ctr); } 
                        );
      t.Start();
      t.Wait();   
   }
}
// The example displays output like the following:
//     Task 1 running on thread 3
//        Iteration 1
//        Iteration 2
//        Iteration 3
//        Iteration 4
//        Iteration 5
//        Iteration 6
//        Iteration 7
//        Iteration 8
//        Iteration 9
//        Iteration 10
Imports System.Threading
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim t As New Task(Sub()
                           Console.WriteLine("Task {0} running on thread {1}",
                                             Task.CurrentId, Thread.CurrentThread.ManagedThreadId )
                           For ctr As Integer = 1 To 10
                              Console.WriteLine("   Iteration {0}", ctr)
                           Next   
                        End Sub)
      t.Start
      t.Wait()   
   End Sub
End Module
' The example displays output like the following:
'     Task 1 running on thread 3
'        Iteration 1
'        Iteration 2
'        Iteration 3
'        Iteration 4
'        Iteration 5
'        Iteration 6
'        Iteration 7
'        Iteration 8
'        Iteration 9
'        Iteration 10

Comentários

Uma tarefa pode ser iniciada e executada apenas uma vez. Qualquer tentativa de agendar uma tarefa uma segunda vez resultará em uma exceção.

Ele Start é usado para executar uma tarefa que foi criada chamando um dos Task construtores. Normalmente, você faz isso quando precisa separar a criação da tarefa de sua execução, como quando você executa condicionalmente tarefas criadas. Para o caso mais comum em que você não precisa separar a instanciação da tarefa da execução, recomendamos que você chame uma sobrecarga do método ou TaskFactory.StartNew do Task.Run método.

Para obter informações sobre como lidar com exceções geradas por operações de tarefa, consulte Tratamento de Exceções.

Confira também

Aplica-se a

Start(TaskScheduler)

Inicia o Task, agendando-o para execução no TaskScheduler especificado.

public:
 void Start(System::Threading::Tasks::TaskScheduler ^ scheduler);
public void Start (System.Threading.Tasks.TaskScheduler scheduler);
member this.Start : System.Threading.Tasks.TaskScheduler -> unit
Public Sub Start (scheduler As TaskScheduler)

Parâmetros

scheduler
TaskScheduler

O TaskScheduler com o qual associar e executar essa tarefa.

Exceções

O argumento scheduler é null.

O Task não está em um estado válido para ser iniciado. Ele pode já ter sido iniciado, executado ou cancelado ou pode ter sido criado de forma a não dar suporte ao agendamento direto.

A instância Task foi descartada.

O agendador não pôde colocar essa tarefa na fila.

Comentários

Uma tarefa só pode ser iniciada e executada apenas uma vez. Qualquer tentativa de agendar uma tarefa uma segunda vez resultará em uma exceção.

Para obter informações sobre como lidar com exceções geradas por operações de tarefa, consulte Tratamento de Exceções.

Confira também

Aplica-se a