我有一个Windows服务,有很多工作要同时完成。我研究了线程并找到了ThreadPool类。我目前卡住了,似乎没有任何效果,就像我排队的任何东西都不会运行或调用。在服务的的OnStart()事件中,我创建这样一个主题:C# - ThreadPool.QueueUserWorkItem()要求
Thread mainThread = new Thread(ReceiveMessages);
mainThread.Start();
方法ReceiveMessages()内我有检查过消息的消息队列,然后遍历一个程序。对于每次迭代我叫下面的代码做了一些工作,每条消息:
ThreadPool.QueueUserWorkItem(new WaitCallback(delegate(object state)
{
Interpreter.InsertMessage(encoding.GetBytes(MessageBody));
}), null);
我觉得语法是正确的,这没有问题,编译,但我不禁觉得我失去了一些东西。当我运行这个服务时,没有任何反应。但是,如果我替换上面的代码在这个片段:
insertThread = new Thread(delegate() { Interpreter.InsertMessage(encoding.GetBytes(MessageBody)); });
insertThread .Start();
它的工作原理100%。它不是非常有效,但可能导致服务崩溃(偶尔会出现这种情况,因此我试图改用TheadPool)。任何人都可以谈谈这个问题吗?
这是完美的!奇迹般有效! – 2010-04-22 21:32:34