2015-05-06 15 views

回答

1

可以撥打線程委託函數都像

t1 = new Thread(() =>{ test();test2();}); 

如果你想重複執行測試代碼,那麼你可以在Test()使用循環。如果您想在任何時間間隔後重復執行某些操作,也可以使用Timer

如果你想使用你已經創建的線程,保存線程的創建成本,那麼你可以使用ThreadPool

ThreadPool

許多應用程序創建一個花了大量時間在 沉睡的線程狀態,等待事件發生。其他線程可能會 僅進入休眠狀態,纔會定期喚醒,以輪詢 更改或更新狀態信息。通過嚮應用程序提供由系統MSDN管理的工作線程池 ,線程池使您可以更高效地使用線程。

0

如果您使用的是.NET 4或更高版本,可以使用Task而不是一個線程,那麼你就可以實現這一點使用Task.ContinueWith()

下面是一個例子:

using System; 
using System.Threading; 
using System.Threading.Tasks; 

namespace ConsoleApplication2 
{ 
    static class Program 
    { 
     private static void Main() 
     { 
      var task = Task.Run(() => task1()); 
      task = task.ContinueWith(antecedant => task2()); 

      Console.WriteLine("Waiting for composite task to complete."); 
      task.Wait(); 
      Console.WriteLine("Composite Task completed."); 
     } 

     private static void task1() 
     { 
      Console.WriteLine("Starting task 1"); 
      Thread.Sleep(2000); 
      Console.WriteLine("Ending task 1"); 
     } 

     private static void task2() 
     { 
      Console.WriteLine("Starting task 2"); 
      Thread.Sleep(2000); 
      Console.WriteLine("Ending task 2"); 
     } 
    } 
} 

如果使用這種方法,你不必等待第一個任務分配給它另外一個之前完成。

相關問題