项目中有大文件传输需求,用户在网页端填好某个IP下的共享目录,服务端通过所填路径检测共享目录下的文件以供用户选择待传输的文件,

用户勾选相应文件后点击提交,服务端遂开始执行文件传输。所有的逻辑过程都在同一后台代码中,传文件的代码和其他业务代码都在同一线程中,

因而在文件过大时用户所在页面要等待很久很久,极大地影响用户体验,所以后来将传文件的过程放在新的线程中,以便提高页面响应效率。

将文件传输过程放在新线程中使用的是ThreadPool.QueueUserWorkItem()方法,调用方式是:

protected void Page_Load(object sender, EventArgs e)
{List<string> fileCollection = new List<string>();fileCollection.Add("\\\\127.0.0.1\\folder\\file1.txt");fileCollection.Add("\\\\127.0.0.2\\folder\\file2.txt");fileCollection.Add("\\\\127.0.0.3\\folder\\file3.txt");string destFolder = "\\\\127.1.1.1\\destFolder";ThreadPool.QueueUserWorkItem(state => TransmiteFile(fileCollection, destFolder));
}public void TransmiteFile(List<string> fileCollection ,string destFolder)
{//...some logic
}

下面来认识一下ThreadPool,先看下引用地址:线程池之ThreadPool类与辅助线程 - <第二篇>

转载于:https://www.cnblogs.com/Arlar/p/6905860.html

C# ThreadPool.QueueUserWorkItem()之线程池异步相关推荐

  1. 线程池异步线程中再次获取线程池资源的问题

    问题描述 在线上发生的一次问题, 在场景中有这样一个业务, 需要异步执行一个主任务, 主任务中又包含着N个子任务, 为了整个主任务能够快速处理, 又将子任务按照数量获取线程资源异步处理, 即异步线程A ...

  2. C#线程池ThreadPool.QueueUserWorkItem接收线程执行的方法返回值

    最近在项目中需要用到多线程,考虑了一番,选择了ThreadPool,我的需求是要拿到线程执行方法的返回值, 但是ThreadPool.QueueUserWorkItem的回调方法默认是没有返回值的,搜 ...

  3. 爬虫之基于线程池异步抓取

    from multiprocessing.dummy import Pool #线程池模块#必须只可以有一个参数 def my_requests(url):return requests.get(ur ...

  4. springboot 使用spring的线程池异步执行

    springboot异步执行 1.启动类在这里插入代码片 @SpringBootApplication public class ThreadStudyApplication {public stat ...

  5. 谷粒P193线程池异步分布式session单点登录

    p193 异步 异步复习 多线程几种方式 1.继承Thread 2.实现runable接口3.实现callable接口 4.线程池 public class ThreadTest {public st ...

  6. Spring线程池异步传递MDC信息

    目录 1. 什么是MDC 2. 引入MDC打印步骤 2.1 pom依赖 2.2 log4j2打印日志配置文件 3 步骤演示 3.1 单线程业务使用示例 postman查询示例 查询代码 查询日志 3. ...

  7. 线程池ThreadPool中QueueUserWorkItem的使用

    先看代码: //设置可以同时处于活动状态的线程池的请求数目. bool pool = ThreadPool.SetMaxThreads(8, 8);if (pool) {ThreadPool.Queu ...

  8. 第三节:ThreadPool的线程开启、线程等待、线程池的设置、定时功能

    一. ThreadPool简介 ThreadPool简介:ThreadPool是一个线程池,当你需要开启n个线程时候,只需把这个指令抛给线程池,它将自动分配线程进行处理,它诞生于.Net 2.0时代. ...

  9. C# 线程池ThreadPool

    什么是线程池?为什么要用线程池?怎么用线程池? 1. 什么是线程池? .NET Framework的ThreadPool类提供一个线程池,该线程池可用于执行任务.发送工作项.处理异步 I/O.代表其他 ...

最新文章

  1. java camel dsl,Apache Camel与Spring DSL
  2. 计算机对口升学可以报考的学校,对口升学可以报考的学校都在这里,赶快来收藏吧...
  3. php中urlencode使用
  4. 算子基本思想_2.2 量子力学基本假设 Part 2
  5. python数据分析兼职能挣钱吗_Python开发能从事数据分析吗
  6. 含噪数据的有效训练,谷歌地标图像检索竞赛2020冠军方案解读
  7. 视频:如何把应用通过vmc部署到cloud foundry上
  8. RocketMQ消息存储、刷盘、负载均衡
  9. php扫描目录字典,Python如何实现敏感目录扫描 Python实现敏感目录扫描代码示例...
  10. CF1062D Fun with Integers
  11. 拓端tecdat:Python主题建模LDA模型、t-SNE 降维聚类、词云可视化文本挖掘新闻组数据集
  12. linux ftp命令下载目录,linux命令行下的ftp 多文件下载和目录下载
  13. 使用python+selenium超级鹰破解图像识别验证码
  14. Windows Live Writer插件开发
  15. 三角函数的倍角、半角与降幂公式
  16. 线上连锁线下整合 连锁店电商解决方案
  17. 程序设计思想——算法
  18. 计算机专业夏令营英语面试范文,夏令营面试英语自我介绍
  19. 2022-2028全球高纯硅溶胶行业调研及趋势分析报告
  20. wordpress教程 – 修改增加默认文章阅读量的最简单办法

热门文章

  1. Cannot insert into target table because column number/types are differen
  2. Java实现在线秒杀系统(主要问题以及源码)
  3. 绝对路径打包前端资源在Nginx中代理配置
  4. Popover前世今生
  5. 键盘ASCII码和Ctrl组合键码
  6. 陈老师带给你简单移动的8个有趣方案
  7. RK3288W Android8.1开发日志(二)
  8. 如何写出高质量的个人简历?
  9. 淘宝开店-新手卖家上哪找货源
  10. 侨兴收购飞思卡尔无线事业部是假新闻