2012-08-16 135 views
0

我有Windows項目和一個每5秒鐘有一個計時器的窗體。Windows服務中的多個線程

它調用和處理來自請求命名錶的時間明智和條件明智的方法。

但我有一些方法類型需要太多的時間來響應,並希望在單獨的線程中的這些方法。這樣我就可以在單獨的線程和同步中運行這兩種請求類型。

我怎樣才能分開使用線程多異步線程這兩個?

+2

你有一個 「窗口服務」 和 「一種形式」?困惑。 – James 2012-08-16 10:36:28

+0

是的,我有Windows項目,並有一種形式,作爲一個服務(myproject.exe)在後臺運行。 – 2012-08-16 10:54:09

回答

5

我建議你看一下.NET 4.0 Task類。每次觸發完整線程可能會矯枉過正。任務與定時器一起使用底層線程池並行執行工作。

使用Task是簡單的:

Task t = Task.Factory.StartNew(
     () => 
     { 
      // task code here 
     }); 
+1

這個鏈接可能很方便 - http://msdn.microsoft.com/en-us/library/dd460717.aspx – Maarten 2012-08-16 10:41:19

1
using System; 
using System.Threading; 

class Program 
{ 
    static void Main() 
    { 
    Thread thread1 = new Thread(new ThreadStart(A)); 
    Thread thread2 = new Thread(new ThreadStart(B)); 
    thread1.Start(); 
    thread2.Start(); 
    thread1.Join(); 
    thread2.Join(); 
    } 

    static void A() 
    { 
    Thread.Sleep(100); 
    Console.WriteLine('A'); 
    } 

    static void B() 
    { 
    Thread.Sleep(1000); 
    Console.WriteLine('B'); 
    } 
} 

Threading Tutorial

+0

所以這意味着,我的服務將調用方法A和B異步..如果A等待10分鐘,然後B會異步調用並執行其代碼嗎? – 2012-08-16 11:04:03

+0

這應該是:) – TheGeekZn 2012-08-16 11:37:52

+0

在這個例子中實際上有三個線程 - 兩個'Thread'對象和主UI線程。這種方法的缺點是主UI線程被鎖定,直到兩個Thread對象完成工作。 – 2012-08-16 14:29:33