【发布时间】:2013-12-06 17:12:28
【问题描述】:
我正在创建一个包含 2 个独立组件的 Windows 服务: 1 个组件创建作业并将它们插入数据库(1 个线程) 第二个组件处理这些作业(线程池中的多个 FIXED # 线程)
只要服务在运行,这两个组件就会一直运行。
我坚持的是确定如何实现这个线程池。我做了一些研究,似乎有很多方法可以做到这一点,例如创建一个覆盖方法“ThreadPoolCallback”的类,以及使用 ThreadPool.QueueUserWorkItem 对工作项进行排队。 http://msdn.microsoft.com/en-us/library/3dasc8as.aspx
但是在给出的示例中,它似乎不适合我的场景。我想最初在线程池中创建固定数量的线程。然后喂它工作来处理。我该怎么做?
// 用于线程池的包装器方法。
public void ThreadPoolCallback(Object threadContext)
{
int threadIndex = (int)threadContext;
Console.WriteLine("thread {0} started...", threadIndex);
_fibOfN = Calculate(_n);
Console.WriteLine("thread {0} result calculated...", threadIndex);
_doneEvent.Set();
}
Fibonacci[] fibArray = new Fibonacci[FibonacciCalculations];
const int FibonacciCalculations = 10;
for (int i = 0; i < FibonacciCalculations; i++)
{
ThreadPool.QueueUserWorkItem(f.ThreadPoolCallback, i);
}
【问题讨论】:
标签: c# multithreading windows-services