Aracılığıyla paylaş


TaskStatus Sabit listesi

Tanım

Bir yaşam döngüsündeki geçerli aşamayı Tasktemsil eder.

public enum class TaskStatus
public enum TaskStatus
type TaskStatus = 
Public Enum TaskStatus
Devralma
TaskStatus

Alanlar

Canceled 6

Görev, belirteç sinyalli durumdayken kendi CancellationToken'ı ile bir OperationCanceledException oluşturarak iptali kabul etti veya görevin CancellationToken'i yürütmeye başlamadan önce zaten sinyal verildi. Daha fazla bilgi için bkz . Görev İptali.

Created 0

Görev başlatıldı ancak henüz zamanlanmadı.

Faulted 7

İşlenmeyen bir özel durum nedeniyle görev tamamlandı.

RanToCompletion 5

Görev başarıyla yürütülerek tamamlandı.

Running 3

Görev çalışıyor ancak henüz tamamlanmadı.

WaitingForActivation 1

Görev, .NET altyapısı tarafından dahili olarak etkinleştirilmeyi ve zamanlamayı bekliyor.

WaitingForChildrenToComplete 4

Görev yürütmeyi tamamladı ve ekli alt görevlerin tamamlanmasını örtük olarak bekliyor.

WaitingToRun 2

Görev yürütme için zamanlandı ancak henüz yürütülmeye başlamadı.

Örnekler

Aşağıdaki örnek, bir sayaç 2 milyon değerine artırılana kadar döngü yapacak 20 görev oluşturur. İlk 10 görev 2 milyona ulaştığında iptal belirteci iptal edilir ve sayaçları 2 milyona ulaşmamış tüm görevler iptal edilir. Örnek daha sonra görevin başarıyla tamamlanıp tamamlanmadığını veya iptal edilip edilmediğini belirtmek için her görevin özelliğini inceler Task.Status . Tamamlananlar için, görev tarafından döndürülen değeri görüntüler.

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
Imports System.Collections.Generic
Imports System.Threading
Imports System.Threading.Tasks

Module Example

   Public Sub Main()
      Dim tasks As New List(Of Task(Of Integer))()
      Dim source As New CancellationTokenSource
      Dim token As CancellationToken = source.Token
      Dim completedIterations As Integer = 0
      
      For n As Integer = 0 To 19
         tasks.Add(Task.Run( Function()
                                Dim iterations As Integer= 0
                                For ctr As Long = 1 To 2000000
                                   token.ThrowIfCancellationRequested()
                                   iterations += 1
                                Next
                                Interlocked.Increment(completedIterations)
                                If completedIterations >= 10 Then source.Cancel()
                                Return iterations
                             End Function, token))
      Next

      Console.WriteLine("Waiting for the first 10 tasks to complete... ")
      Try
         Task.WaitAll(tasks.ToArray())
      Catch e As AggregateException
         Console.WriteLine("Status of tasks:")
         Console.WriteLine()
         Console.WriteLine("{0,10} {1,20} {2,14}", "Task Id",
                           "Status", "Iterations")
         For Each t In tasks
            Console.WriteLine("{0,10} {1,20} {2,14}",
                              t.Id, t.Status,
                              If(t.Status <> TaskStatus.Canceled,
                                 t.Result.ToString("N0"), "n/a"))
         Next
      End Try
   End Sub
End Module
' 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

Açıklamalar

özelliği, Task.Status görevin geçerli durumunu göstermek için numaralandırmanın bir üyesini TaskStatus döndürür.

Şunlara uygulanır

Ayrıca bkz.