2017-02-14 58 views
1

我試圖找到一種方法,導致程序不會暫停,但他們是延遲執行某些任務。即例如,我試圖延遲輸出「Hello」給控制檯10秒,但程序將繼續執行程序的其餘部分。C#延遲 - 延遲輸出到控制檯,而程序繼續執行

+0

你可以啓動它本身暫停10秒,然後寫入控制檯另一個線程。 – David

回答

1

啓動一個新的線程:

Task.Factory.StartNew(new Action(() => 
{ 
    Thread.Sleep(1000 * 10); // sleep for 10 seconds 
    Console.Write("Whatever"); 
})); 
5

使用TPL:

static void Main(string[] args) 
{ 
    Console.WriteLine("Starting at " + DateTime.Now.ToString()); 

    Task.Run(() => 
    { 
     Thread.Sleep(10000); 
     Console.WriteLine("Done sleeping " + DateTime.Now.ToString()); 
    }); 

    Console.WriteLine("Press any Key..."); 

    Console.ReadKey(); 

} 

輸出:

Starting at 2/14/2017 3:05:09 PM 
Press any Key... 
Done sleeping 2/14/2017 3:05:19 PM 

只是注意,如果按前10秒的關鍵,它將退出。

2

有模擬延遲2種典型的方式:

  • 一個異步任務,如:Task.Delay
  • 或阻止活動:Thread.Sleep

您似乎指的是第一種情況。

這是一個例子

public static void Main(string[] args) 
    { 
     Both(); 
    } 
    static void Both() { 
     var list = new Task [2]; 
     list[0] = PauseAndWrite(); 
     list[1] = WriteMore(); 
     Task.WaitAll(list); 
    } 
    static async Task PauseAndWrite() { 
     await Task.Delay(2000); 
     Console.WriteLine("A !"); 
    } 
    static async Task WriteMore() { 

     for(int i = 0; i<5; i++) { 
      await Task.Delay(500); 
      Console.WriteLine("B - " + i); 
     } 
    } 

輸出

B - 0 
B - 1 
B - 2 
A ! 
B - 3 
B - 4