DW做旅游网站毕业设计模板,什么是定制网站,整站seo策略实施,哈尔滨市建设工程交易信息网概述ThreadPool是.Net Framework 2.0版本中出现的。自从Task出来以后#xff0c;ThreadPool已经很少用了#xff0c;但是一些老的代码或者一些古老的程序猿还是会用到他#xff0c;所以我们可以不用它#xff0c;但是还是有必须学习和了解他.ThreadPool用法举例static void…概述ThreadPool是.Net Framework 2.0版本中出现的。自从Task出来以后ThreadPool已经很少用了但是一些老的代码或者一些古老的程序猿还是会用到他所以我们可以不用它但是还是有必须学习和了解他.ThreadPool用法举例static void Main(string[] args){string str 当前时间是;ThreadPool.SetMaxThreads(5,5);for (int i 0; i 10; i){ThreadPool.QueueUserWorkItem(ThreadFuc, str);}Console.ReadKey();}public static void ThreadFuc(object str){Console.WriteLine($线程Id是{Thread.CurrentThread.ManagedThreadId},{str}:{DateTime.Now});Thread.Sleep(1000);}运行结果我们看时间差不多在同一时间完成了如果不开启线程则前后需要10秒钟QueueUserWorkItem有两个重载分别是带参数和不带参数的public static bool QueueUserWorkItem(WaitCallback callBack);
public static bool QueueUserWorkItem(WaitCallback callBack, object state);带参数的解释如下//// 摘要:// 将方法排入队列以便执行并指定包含该方法所用数据的对象。此方法在有线程池线程变得可用时执行。//// 参数:// callBack:// System.Threading.WaitCallback它表示要执行的方法。//// state:// 包含方法所用数据的对象。//// 返回结果:// 如果此方法成功排队则为 true如果无法将该工作项排队则引发 System.NotSupportedException。//// 异常:// T:System.NotSupportedException:// 承载公共语言运行时 (CLR)并且主机不支持此操作。//// T:System.ArgumentNullException:// callBack 为 null。 ThreadPool类的方法SetMaxThreads用来设置可以同时处于活动状态的线程池的请求数目。所有大于此数目的请求将保持排队状态直到线程池线程变为可用。函数原型如下public static bool SetMaxThreads(int workerThreads, int completionPortThreads);// 参数:// workerThreads:// 线程池中辅助线程的最大数目。//// completionPortThreads:// 线程池中异步 I/O 线程的最大数目。//// 返回结果:// 如果更改成功则为 true否则为 false。线程池中的线程执行完指定的方法后并不会自动消除而是以挂起状态返回线程池如果应用程序再次向线程池发出请求那么处以挂起状态的线程就会被激活并执行任务而不会创建新线程这就节约了很多开销。只有当线程数达到最大线程数量系统才会自动销毁线程。因此使用线程池可以避免大量的创建和销毁的开支具有更好的性能和稳定性其次开发人员把线程交给系统管理可以集中精力处理其他任务。