线程池ThreadPool实现异步多线程
2024-09-04 01:50:03
ThreadPool线程池的主要方法:
1. public static Boolean QueueUserWorkItem(WaitCallback wc, Object state);
WaitCallback回调函数:通过将一些回调函数放入线程池中让其形成队列,然后线程池会自动创建或者复用线程去执行处理这些回调函数。State: 这个参数也是非常重要的,当执行带有参数的回调函数时,该参数会将引用传入,回调方法中,供其使用。
eg:用于文件处理://删除ftp目录文件
DataTable dt = new ArchivesHelper().GetFileListByArchivesId(ID); //ftp文件
foreach (DataRow dr in dt.Rows)
{
StateInfo sta = new StateInfo();
sta.FtpPath = dr["filePath"].ToString();
sta.FtpThumbnailPath = dr["Thumbnail"].ToString();
//hreadProc方法加入线程池中执行,sta对象传入回调函数,供ThreadProc方法使用
ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadProc), sta);
}
/// <summary>
/// 创建一个委托来引用在辅助线程中执行的代码(接受一个对象参数并且没有返回值)
/// </summary>
/// <param name="stateInfo"></param>
private void ThreadProc(Object stateInfo)
{
var sta = stateInfo as StateInfo;
FtpHelper.DeleteFile(sta.FtpPath); //删除ftp文件
FtpHelper.DeleteFile(sta.FtpThumbnailPath);//删除ftp缩略图
}
最新文章
- ABP(现代ASP.NET样板开发框架)系列之14、ABP领域层——领域事件(Domain events)
- Redis的Python实践,以及四中常用应用场景详解——学习董伟明老师的《Python Web开发实践》
- 如何寻找&ldquo;真爱&rdquo;型合伙人
- Git for Windows v2.11.0 Release Notes
- LinkedList子类与Queue接口
- Learning to Rank 之 listwise ranking
- python 字符串编码
- Android核心组件 Service
- Xcode6 运行程序后,右侧Debug区域的Memory显示空白解决方法
- HTML5图片预览
- iOS 开发 UI 搭建心得(一)—— 驾驭 StoryBoard
- 用C++写一个简单的订阅者
- pip&;easy_install使用
- 【iOS】OC-时间转化的时区问题
- io文本加密
- Node笔记一
- CPDA-战略管理
- 使用Consul 实现 MagicOnion(GRpc) 服务注册和发现
- 快速失败/报错机制 - fail-fast
- SSL及其加密通信过程