Freigeben über


Task.Start Methode

Definition

Startet den Task.

Überlädt

Start()

Startet die Task und plant ihre Ausführung mit dem aktuellen TaskScheduler.

Start(TaskScheduler)

Startet die Task und plant ihre Ausführung mit dem angegebenen TaskScheduler.

Start()

Startet die Task und plant ihre Ausführung mit dem aktuellen TaskScheduler.

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

Ausnahmen

Die Task-Instanz wurde verworfen.

Die Task liegt nicht in einem gültigen Zustand vor, um gestartet werden zu können. Möglicherweise wurde sie bereits gestartet, ausgeführt oder abgebrochen, oder sie wurde möglicherweise auf eine Weise erstellt, die keine direkte Planung unterstützt.

Beispiele

Im folgenden Beispiel wird der Task(Action) Konstruktor aufgerufen, um ein neues Task Objekt zu instanziieren, das die Aufgaben-ID und die verwaltete Thread-ID anzeigt und dann eine Schleife ausführt. Anschließend wird die Start Methode aufgerufen, um die Aufgabe auszuführen. Da es sich um eine Konsolen-App handelt, ist der Aufruf der Wait Methode erforderlich, um zu verhindern, dass die App beendet wird, bevor die Ausführung der Aufgabe abgeschlossen ist.

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

Hinweise

Eine Aufgabe kann nur einmal gestartet und ausgeführt werden. Alle Versuche, einen Vorgang ein zweites Mal zu planen, führt zu einer Ausnahme.

Dies Start wird verwendet, um eine Aufgabe auszuführen, die durch Aufrufen eines der Task Konstruktoren erstellt wurde. In der Regel müssen Sie die Erstellung der Aufgabe von der Ausführung trennen, z. B. wenn Sie Aufgaben, die Sie erstellt haben, bedingt ausführen. Für den häufigeren Fall, in dem Sie die Instanziierung von Vorgängen nicht von der Ausführung trennen müssen, empfehlen wir, eine Überladung der Methode TaskFactory.StartNew oder der Task.Run Methode aufzurufen.

Informationen zum Behandeln von Ausnahmen, die von Vorgangsvorgängen ausgelöst werden, finden Sie unter "Ausnahmebehandlung".

Siehe auch

Gilt für

Start(TaskScheduler)

Startet die Task und plant ihre Ausführung mit dem angegebenen 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)

Parameter

scheduler
TaskScheduler

Der TaskScheduler, dem diese Aufgabe zugeordnet und mit dem sie ausgeführt werden soll.

Ausnahmen

Das scheduler-Argument lautet null.

Die Task liegt nicht in einem gültigen Zustand vor, um gestartet werden zu können. Möglicherweise wurde sie bereits gestartet, ausgeführt oder abgebrochen, oder sie wurde möglicherweise auf eine Weise erstellt, die keine direkte Planung unterstützt.

Die Task-Instanz wurde verworfen.

Der Planer konnte diesen Task nicht in die Warteschlange einreihen.

Hinweise

Eine Aufgabe kann nur einmal gestartet und ausgeführt werden. Alle Versuche, einen Vorgang ein zweites Mal zu planen, führt zu einer Ausnahme.

Informationen zum Behandeln von Ausnahmen, die von Vorgangsvorgängen ausgelöst werden, finden Sie unter "Ausnahmebehandlung".

Siehe auch

Gilt für