Task.Start Método

Definição

Inicia o Task.

Sobrecargas

Name Description
Start()

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

Start(TaskScheduler)

Inicia o Task, agendando-o para execução ao 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

O Task caso foi resolvido.

Não Task está num estado válido para ser iniciado. Pode já ter sido iniciado, executado ou cancelado, ou pode ter sido criado de uma forma que não suporta agendamento direto.

Exemplos

O exemplo seguinte chama o Task(Action) construtor para instanciar um novo Task objeto que mostra o seu ID de tarefa e o ID do thread gerido e depois executa um ciclo. Depois, chama o Start método para executar a tarefa. Como esta é uma aplicação de consola, a chamada ao Wait método é necessária para evitar que a aplicação termine antes da tarefa terminar.

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

Observações

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

O Start é usado para executar uma tarefa criada ao chamar um dos Task construtores. Normalmente, faz-se isto quando precisa de separar a criação da tarefa da sua execução, como quando executa condicionalmente tarefas que criou. No caso mais comum em que não é necessário separar a instância da tarefa da execução, recomendamos que chame um overload do Task.Run método ou TaskFactory.StartNew .

Para informações sobre o tratamento de exceções lançadas por operações de tarefa, veja Gestão de Exceções.

Ver também

Aplica-se a

Start(TaskScheduler)

Inicia o Task, agendando-o para execução ao 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 que associar e executar esta tarefa.

Exceções

O scheduler argumento é null.

Não Task está num estado válido para ser iniciado. Pode já ter sido iniciado, executado ou cancelado, ou pode ter sido criado de uma forma que não suporta agendamento direto.

O Task caso foi resolvido.

O agendador não conseguiu colocar esta tarefa na fila.

Observações

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

Para informações sobre o tratamento de exceções lançadas por operações de tarefa, veja Gestão de Exceções.

Ver também

Aplica-se a