2016-09-19 6 views
-1

Ich bin recherchiert Aufgabe und ein bisschen ein Problem zu bekommen Ist es möglich, eine Aufgabe mit einer for-Schleife auszuführen und zu stoppen? Hier ist mein Code Beispiel:Starten Sie eine Aufgabe von for-Schleife, und beenden Sie es, wenn die Schleife endet

 static void Main(string[] args) 
    { 
     for (int i = 0; i>=5; i++) 
     { 
      Task myTask = Task.Factory.StartNew(() => TestTask()); 
      myTask.Wait(); 
      if (myTask.IsCompleted) 
      { 
       Console.WriteLine("Task was complete"); 
      } 
      else 
      { 
       Console.WriteLine(myTask.Status); 
      } 
     } 
     Console.ReadKey(); 
    } 
    private static void TestTask() 
    { 
     Console.WriteLine("Add number"); 
    } 
+2

Wo Sie aufhören zu stornieren? Oder möchten Sie, dass sie parallel laufen? –

+3

Was genau versuchen Sie zu tun? Sie scheinen nie auf die Aufgaben zu warten –

+0

Yeap Entschuldigung kopierte den Code, ohne zu warten, aber immer noch, selbst wenn ich Wait es immer noch tun, drucken Sie den Text aus der Task bearbeitet es bereits. – Harardin

Antwort

0

Dies ist beispielsweise, wie einfach ist es, eine Aufgabe mit jeder Art von Iteration

static CancellationTokenSource cts; 
    static void Main(string[] args) 
    { 
     cts = new CancellationTokenSource(); 
     Task.Factory.StartNew(test); 
    } 

    private async static void test() 
    { 

     await function(cts.Token); 

    } 

    static async Task function(CancellationToken ct) 
    { 
     try 
     { 
      while (!ct.IsCancellationRequested) 
      { 
       //start a loop 
       Thread.Sleep(1000); 
       //task done 
       cts.Cancel(); 
       //cancel the loop 
      } 
     } 
     catch { } 
    } 
Verwandte Themen