C# ThreadPool之QueueUserWorkItem使用案例详解
C# ThreadPool之QueueUserWorkItem使用案例详解 这篇文章介绍了C#中的线程池,及其使用方式之一:QueueUserWorkItem方法。接下来,我会更详细地讲解这篇文章的重点内容,以及为何可以使用它来实现线程池。
什么是线程池?
在线程池中,管理器维护多个已经创建的线程,使每个线程可以被重复利用,从而达到节省线程创建时间的目的,提高线程使用效率,这样就不需要每次都新建一个线程运行一个任务。
在 System.Threading 命名空间中提供了一个 ThreadPool 类。在不需要使用自定义线程的情况下,可以使用线程池来高效地处理后台任务。
QueueUserWorkItem方法
ThreadPool 类中提供了 QueueUserWorkItem 静态方法,通过它可以轻松地将一个委托方法加入线程池来异步执行,从而不用创建线程。
QueueUserWorkItem 方法提供了三种方法重载,分别对应不同类型的委托:
ThreadPool.QueueUserWorkItem(WaitCallback);ThreadPool.QueueUserWorkItem(WaitCallback, Object);ThreadPool.UnsafeQueueUserWorkItem(WaitCallback, Object);第一个参数 WaitCallback 是要执行的委托,第二个参数是可选的状态对象,在委托所需参数类型为 object 的情况下才能使用。
示例说明
以下两个示例说明了 QueueUserWorkItem 的使用方法。
示例1
ThreadPool.QueueUserWorkItem(new WaitCallback(WorkMethod), null);示例2
ThreadPool.QueueUserWorkItem(delegate { Console.WriteLine("线程池线程执行!"); });