Task.Start Método

Definição

Inicia o Task.

Sobrecargas

Nome Description
Start()

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

Start(TaskScheduler)

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

Start()

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

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

Exceções

A Task instância foi descartada.

O Task não está em um estado válido a ser iniciado. Ele pode já ter sido iniciado, executado ou cancelado ou pode ter sido criado de maneira que não dê 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 este é um aplicativo de console, a chamada para o Wait método é necessária para impedir que o aplicativo seja encerrado antes que a tarefa conclua 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
open System.Threading
open System.Threading.Tasks

let t =
    new Task(fun () ->
        printfn $"Task {Task.CurrentId} running on thread {Thread.CurrentThread.ManagedThreadId}"

        for i = 1 to 10 do
            printfn $"   Iteration {i}")

t.Start()
t.Wait() |> ignore

// 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 de Tratamento de Exceções.

Confira também

Aplica-se a

Start(TaskScheduler)

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

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 scheduler argumento é null.

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

A Task instância foi descartada.

O agendador não pôde enfileirar essa tarefa.

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 de Tratamento de Exceções.

Confira também

Aplica-se a