也许你曾经遇到过:一个线程做事情,其他线程等待,那么有可能因为不做事情的线程在等待,而浪费掉时间。
我们可以通过线程池ThreadPool来解决,使用ThreadPool.QueueUserWorkItem(回调函数,object),将参数封装在一个类的对象中,传给回调函数去执行。
TheadPool的用法:
1、创建一个ManualResetEvent的对象,就像一个信号灯,指示线程的挂起和执行;
2、ManualResetEvent对象创建时,可以指定默认状态:true为有信号,false为无信号;
3、调用Reset()方法重置状态;
4、调用WaitOne()方法,使线程处于等待状态;
5、调用Set()方法设置状态。
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Collections;
namespace Demo
{
public class ParamObject
{
public int number;
public ParamObject (int number)
{
this.number = number;
}
}
public class Threa

本文介绍了如何使用C#的线程池ThreadPool提高多线程效率,通过QueueUserWorkItem结合回调函数,实现任务的异步执行。线程池能避免空闲线程等待导致的时间浪费,通过ManualResetEvent对象进行线程同步控制,包括创建、重置、等待和设置状态等操作。
最低0.47元/天 解锁文章
7146

被折叠的 条评论
为什么被折叠?



