异步 ThreadPool
线程池是单例,一个进程里只有一个线程池
private void btnThreadPool_Click(object sender, EventArgs e)
{
Stopwatch watch = new Stopwatch();
watch.Start();
Console.WriteLine();
Console.WriteLine("****************btnThreadPool_Click Start 主线程id={0}*****************", Thread.CurrentThread.ManagedThreadId);
List<ManualResetEvent> mreList = new List<ManualResetEvent>();
for (int i = ; i < ; i++)
{
int b = i;
mreList.Add(new ManualResetEvent(false));
WaitCallback method = t =>
{
this.TestThreadWithoutReturn(string.Format("btnThreadPool_Click_{0}", b));
Console.WriteLine("我是回调 btnThreadPool_Click_{0}", b);
mreList[b].Set();
};
ThreadPool.QueueUserWorkItem(method); //WaitCallback method = t => this.TestThreadWithoutReturn(t.ToString ());
//ThreadPool.QueueUserWorkItem(method, string.Format("btnThreadPool_Click_{0}", b));
}
private void TestThreadWithoutReturn(string name)
{
Console.WriteLine("TestThread Start Name={2},当前线程的id:{0},当前时间为{1}", Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString("hh:mm:ss:fff"), name);
long Sum = ;
for (int i = ; i < ; i++)
{
Sum += i;
}
//Thread.Sleep(2000);
Console.WriteLine("TestThread End Name={2},当前线程的id:{0},当前时间为{1}", Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString("hh:mm:ss:fff"), name);
}
异步 ThreadPool的更多相关文章
- 你必须知道的ASP.NET-----IHttpAsyncHandler实质
一.写在前面 一说到IHttpAsyncHandler,很多人会顾名思义地说'不就是异步IHttpHandler'吗? 但当我发出疑问:"你真知道他们的不同之处?你真会使用它吗?" ...
- StackExchange.Redis .net core Timeout performing 超时问题
最近在做的一个项目,用的.net core 2.1,然后缓存用的Redis,缓存相关封装是同事写的,用的驱动是StackExchange.Redis version 2.0.571 ,一直听说这个驱动 ...
- C#线程学习笔记七:Task详细用法
一.Task类简介: Task类是在.NET Framework 4.0中提供的新功能,主要用于异步操作的控制.它比Thread和ThreadPool提供了更为强大的功能,并且更方便使用. Task和 ...
- C#线程学习笔记二:线程池中的工作者线程
本笔记摘抄自:https://www.cnblogs.com/zhili/archive/2012/07/18/ThreadPool.html,记录一下学习过程以备后续查用. 一.线程池基础 首先,创 ...
- StackExchange.Redis Timeout performing 超时问题
最近在做的一个项目,用的.net core 2.1,然后缓存用的Redis,缓存相关封装是同事写的,用的驱动是StackExchange.Redis version 2.0.571 ,一直听说这个驱动 ...
- 多线程异步编程示例和实践-Thread和ThreadPool
说到多线程异步编程,总会说起Thread.ThreadPool.Task.TPL这一系列的技术.总结整理了一版编程示例和实践,分享给大家. 先从Thread和ThreadPool说起: 1. 创建并启 ...
- ThreadPool.QueueUserWorkItem引发的血案,线程池异步非正确姿势导致程序闪退的问题
ThreadPool是.net System.Threading命名空间下的线程池对象.使用QueueUserWorkItem实现对异步委托的先进先出有序的回调.如果在回调的方法里面发生异常则应用程序 ...
- .NET 异步多线程,Thread,ThreadPool,Task,Parallel,异常处理,线程取消
今天记录一下异步多线程的进阶历史,以及简单的使用方法 主要还是以Task,Parallel为主,毕竟用的比较多的现在就是这些了,再往前去的,除非是老项目,不然真的应该是挺少了,大概有个概念,就当了解一 ...
- 那些年我们一起追逐的多线程(Thread、ThreadPool、委托异步调用、Task/TaskFactory、Parallerl、async和await)
一. 背景 在刚接触开发的头几年里,说实话,根本不考虑多线程的这个问题,貌似那时候脑子里也有没有多线程的这个概念,所有的业务都是一个线程来处理,不考虑性能问题,当然也没有考虑多线程操作一条记录存在的并 ...
随机推荐
- [转]Eclipse创建Maven项目
构建Maven项目的完整过程--普通web项目(Eclipse) 进行以下步骤的前提是你已经安装好本地maven库和eclipse中的maven插件了(有的eclipse中已经集成了maven插件) ...
- Windows 下有什么软件能够极大地提高工作效率
Windows 下有什么软件能够极大地提高工作效率?修改 可以推荐一些好的应用或者有趣的程序,能提升工作效率或者能让人眼前一亮的.修改 举报1 条评论 分享 • 邀请回答 按票数排序按时间排序 2 ...
- TwinCAT3的c++和标准c++(c++11)特性区别
1.vector不能使用花括号初始化 2.不支持cmath,需要使用TcMath.h
- Android开发相关工具(eclipse篇)
ADT 安装该工具后才能配置Android SDK包,使可以在eclipse里开发Android程序 AVD Android模拟器管理工具,创建删除Android模拟器 SDK Manager And ...
- cocos2dx 新手引导
static CCClippingNode* create(); //使用一个节点作为模版创建裁剪节点 static CCClippingNode* create(CCNode *pStencil); ...
- 使用vs2019进行Linux远程开发
通常,当我们开发Linux程序时有两种方案: 在Linux上直接编写程序并进行运行测试和调试 在Windows或Mac OS X上借助工具进行远程开发 虽然我自己是在Linux环境上直接进行开发的,但 ...
- E20190409-hm
viable adj. 切实可行的; 能养活的; 能自行生产发育的; 有望实现的; resolution n. 分辨率; 解决; 决心; 坚决; produce vt. 产生; 生产; 制作; 创 ...
- 洛谷 - P2278 - 操作系统 - 模拟
https://www.luogu.org/problemnew/show/P2278 题目没有说同时到达的优先级最大的应该处理谁. 讲道理就是处理优先级最大的. #include<bits/s ...
- PhpStorm插件之CodeGlance
安装插件 File->Setting->Pluugins 搜索 CodeGlance 如何使用 安装完插件后,RESTART IDE,随便打开一个文件都可看到效果
- hyperledger fabric 1.0.5 分布式部署 (七)
fabric 使用 fabric-ca 服务 准备部分 首先需要用户从github上download fabric-ca 的工程代码 cd $GOPATH/src/github.com/hyperle ...