Auf Englisch lesen

Freigeben über


TaskStatus Enumeration

Definition

Stellt die aktuelle Phase im Lebenszyklus eines Task dar.

C#
public enum TaskStatus
Vererbung
TaskStatus

Felder

Canceled 6

Die Aufgabe hat den Abbruch durch Auslösen einer OperationCanceledException mit einem eigenen CancellationToken bestätigt, während das Token im Zustand „signalisiert“ war, oder das CancellationToken der Aufgabe wurde bereits vor dem Start der Aufgabenausführung signalisiert. Weitere Informationen finden Sie unter Aufgabenabbruch.

Created 0

Die Aufgabe wurde initialisiert, aber noch nicht geplant.

Faulted 7

Die Aufgabe wurde aufgrund eines Ausnahmefehlers abgeschlossen.

RanToCompletion 5

Die Ausführung der Aufgabe wurde erfolgreich abgeschlossen.

Running 3

Die Aufgabe wird ausgeführt, wurde aber noch nicht abgeschlossen.

WaitingForActivation 1

Der Task wartet auf seine Aktivierung und interne Planung durch die .NET-Infrastruktur.

WaitingForChildrenToComplete 4

Die Aufgabe hat die Ausführung beendet und wartet implizit auf den Abschluss angefügter untergeordneter Aufgaben.

WaitingToRun 2

Die Aufgabe wurde zur Ausführung geplant, aber noch nicht gestartet.

Beispiele

Im folgenden Beispiel werden 20 Vorgänge erstellt, die schleifen, bis ein Zähler auf einen Wert von 2 Millionen erhöht wird. Wenn die ersten 10 Vorgänge 2 Millionen erreichen, wird das Abbruchtoken abgebrochen, und alle Vorgänge, deren Leistungsindikatoren nicht 2 Millionen erreicht haben, werden abgebrochen. Im Beispiel wird dann die Task.Status Eigenschaft jeder Aufgabe untersucht, um anzugeben, ob die Aufgabe erfolgreich abgeschlossen wurde oder abgebrochen wurde. Für diejenigen, die abgeschlossen sind, wird der von der Aufgabe zurückgegebene Wert angezeigt.

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

Hinweise

Die Task.Status Eigenschaft gibt ein Element der TaskStatus Enumeration zurück, um den aktuellen Status des Vorgangs anzugeben.

Gilt für

Produkt Versionen
.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

Siehe auch