我有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