我有Windows項目和一個每5秒鐘有一個計時器的窗體。Windows服務中的多個線程
它調用和處理來自請求命名錶的時間明智和條件明智的方法。
但我有一些方法類型需要太多的時間來響應,並希望在單獨的線程中的這些方法。這樣我就可以在單獨的線程和同步中運行這兩種請求類型。
我怎樣才能分開使用線程多異步線程這兩個?
我有Windows項目和一個每5秒鐘有一個計時器的窗體。Windows服務中的多個線程
它調用和處理來自請求命名錶的時間明智和條件明智的方法。
但我有一些方法類型需要太多的時間來響應,並希望在單獨的線程中的這些方法。這樣我就可以在單獨的線程和同步中運行這兩種請求類型。
我怎樣才能分開使用線程多異步線程這兩個?
我建議你看一下.NET 4.0 Task
類。每次觸發完整線程可能會矯枉過正。任務與定時器一起使用底層線程池並行執行工作。
使用Task
是簡單的:
Task t = Task.Factory.StartNew(
() =>
{
// task code here
});
這個鏈接可能很方便 - http://msdn.microsoft.com/en-us/library/dd460717.aspx – Maarten 2012-08-16 10:41:19
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');
}
}
所以這意味着,我的服務將調用方法A和B異步..如果A等待10分鐘,然後B會異步調用並執行其代碼嗎? – 2012-08-16 11:04:03
這應該是:) – TheGeekZn 2012-08-16 11:37:52
在這個例子中實際上有三個線程 - 兩個'Thread'對象和主UI線程。這種方法的缺點是主UI線程被鎖定,直到兩個Thread對象完成工作。 – 2012-08-16 14:29:33
你有一個 「窗口服務」 和 「一種形式」?困惑。 – James 2012-08-16 10:36:28
是的,我有Windows項目,並有一種形式,作爲一個服務(myproject.exe)在後臺運行。 – 2012-08-16 10:54:09