2016-09-19 23 views
-1

調査中です。問題が発生しました。 forループを使用してタスクを実行および停止できますか?ここ は、私のコードの例です: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

よろしくお願いします。あなたが待っていてもコードはコピーされていますが、まだ私が使ってもコードはまだコピーされています。 – 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 { } 
    } 
関連する問題