using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
int a;
int b;
ThreadPool.GetMaxThreads(out a, out b);
Console.WriteLine("辅助线程最大:{0}。IO线程最大:{1}",a,b);
for (int i = 0; i
{
ThreadPool.QueueUserWorkItem(Getmsg, i);
}
Console.ReadKey();
}
private static void Getmsg(object o)
{
for (int i = 0; i
{
Console.WriteLine("i:{0}-{1};线程ID:{2}", o.ToString(), i,Thread.CurrentThread.ManagedThreadId);
}
}
}
}
线程池使用起来很简单,但是有一些限制:
①:线程吃池中的所有线程都是后台线程。如果进程所有的前台线程都结束了,所有的后台线程就会停止。不能把如池的线程改为前台线程
②:不能给入池的线程设置优先级或名称
③:对于COM对象,入池的所有线程都是多线程单元线程,许多COM对象都需要单线程单元线程
④:入池的线程只能用于时间较短的任务。对于时间较长的任务可以用Thread类