Tag: multithreading线程

c#Threadpool – 限制线程数

我正在开发一个控制台应用程序 我想使用Threadpool来执行Web下载。 这是一些假代码。 for (int loop=0; loop< 100; loop++) { ThreadPool.QueueUserWorkItem(new WaitCallback(GetPage), pageList[loop]); } snip private static void GetPage(object o) { //get the page } 如何阻止我的代码启动两个以上(或十个或其他)同步线程? 我试过了 ThreadPool.SetMaxThreads(1, 0); ThreadPool.SetMinThreads(1, 0); 但他们似乎没有任何影响。

等待QueueUserWorkItem完成

如果我使用QueueUserWorkItem向线程池添加作业…如何在完成所有作业之前使程序继续运行? 我知道我可以添加一些逻辑来保持应用程序不运行直到所有作业都完成,但我想知道是否有类似Thread.Join()或者是否有任何方法来检索正在分配作业的每个线程。

在使用ThreadPool时,有人可以解释这种奇怪的行为吗?

代码 using System; using System.Threading; public delegate void LoadingProgressCallback(double PercentComplete,string ItemName); public delegate void LoadCompleteCallback(int ItemID, string ItemName); public static class Program { public static void Main(string[] args) { LoadTest loadTest = new LoadTest(); loadTest.LoadItems(args); } } public class LoadTest { ManualResetEvent resetEvent; int numThreads = 0; public LoadTest() {} public void LoadItems(string[] Items) { […]