c# – 限制线程池线程的数量

我在我的应用程序中使用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.我面临的问题是,尽管线程池限制设置为3,我的应用程序同时处理3个以上的文件,而它一次只能处理3个文件.请帮我解决这个问题.

解决方法:

你用的是什么类型的电脑?

MSDN

You cannot set the number of worker
threads or the number of I/O
completion threads to a number smaller
than the number of processors in the
computer.

如果你有4个核心,那么你可以拥有的最小核心是4个核心.

另请注意:

If the common language runtime is
hosted, for example by Internet
Information Services (IIS) or SQL
Server, the host can limit or prevent
changes to the thread pool size.

如果这是由IIS托管的网站,则您也无法更改线程池大小.

上一篇:Java之线程池深度剖析


下一篇:Java线程教程类型问题