我在我的应用程序中使用了ThreadPool
。我已经先通过以下设置线程池的限制:限制线程池线程的数量
ThreadPool.SetMaxThreads(m_iThreadPoolLimit,m_iThreadPoolLimit);
m_Events = new ManualResetEvent(false);
,然后我一直在使用以下
WaitCallback objWcb = new WaitCallback(abc);
ThreadPool.QueueUserWorkItem(objWcb, m_objThreadData);
这里ABC是函数名排队的作业,我我在打电话。 在此之后,我做以下,使我的所有线程来1点和主线程接管并继续进一步
m_Events.WaitOne();
我的线程限制为3,我面临的问题是,对inspite线程池限制设置为3,我的应用程序同时处理超过3个文件,而它应该一次只处理3个文件。请帮我解决这个问题。
你应该检查SetMaxThreads()的返回值。 – Simone 2011-05-16 13:15:01
除非您知道自己在做什么,否则最好不要混淆ThreadPool中的线程数。让运行时处理它。如果您需要限制同时访问的文件数量,请使用更好的方法 - 比如使用信号量。 – 2011-05-16 13:18:48
Microsoft不允许您设置最大线程
Kostadin
2014-08-15 07:57:38