2012-08-16 87 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