限制线程池线程的数量

San*_*rty 3 .net c# multithreading threadpool

ThreadPool在我的申请中使用.我首先使用以下命令设置线程池的限制:

ThreadPool.SetMaxThreads(m_iThreadPoolLimit,m_iThreadPoolLimit);
m_Events = new ManualResetEvent(false);
Run Code Online (Sandbox Code Playgroud)

然后我使用以下内容排队

WaitCallback objWcb = new WaitCallback(abc);
ThreadPool.QueueUserWorkItem(objWcb, m_objThreadData); 
Run Code Online (Sandbox Code Playgroud)

这里abc是我调用的函数的名称.在此之后,我正在执行以下操作,以便我的所有线程都达到1点,主线程接管并继续进行

m_Events.WaitOne();
Run Code Online (Sandbox Code Playgroud)

我的线程限制是3.我面临的问题是,尽管线程池限制设置为3,我的应用程序同时处理3个以上的文件,而它一次只能处理3个文件.请帮我解决这个问题.

Dav*_*rab 5

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

来自MSDN

您不能将工作线程数或I/O完成线程数设置为小于计算机中处理器数的数字.

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

另请注意:

如果托管公共语言运行库(例如,Internet信息服务(IIS)或SQL Server),则主机可以限制或阻止更改线程池大小.

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