2016-09-19 163 views
-1

我研究任务并得到一点问题 是否可以使用for循环运行和停止任务? 这里是我的代码示例:从循环开始任务,并在循环结束时完成

 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

你在哪里停下来?或者你想让它们平行运行? –

+3

你究竟想要做什么?你似乎永远不会等待任务完成 –

+0

Yeap抱歉复制了代码而没有等待,但仍然即使我使用等待它仍然未打印已经编辑过的任务中的文本。 – Harardin

回答

0

这就是例子是多么容易取消任务与任何类型的迭代

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 { } 
    }