博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
THREADSPOOL
阅读量:5285 次
发布时间:2019-06-14

本文共 2096 字,大约阅读时间需要 6 分钟。

STPStartInfo stp = new STPStartInfo();//线程详细配置参数            stp.CallToPostExecute = CallToPostExecute.Always;//在这里选择总是回调            //当工作项执行完成后,是否释放工作项的参数,如果释放,参数对象必须实现IDisposable接口            stp.DisposeOfStateObjects = true;            //当线程池中没有工作项时,闲置的线程等待时间,超过这个时间后,会释放掉这个闲置的线程,默认为60秒           // stp.IdleTimeout = 300;//300s            //最大线程数,默认为25,            //注意,由于windows的机制,所以一般最大线程最大设置成25,            //如果设置成0的话,那么线程池将停止运行            stp.MaxWorkerThreads = 50;//15 thread            //只在STP执行Action<...>与Func<...>两种任务时有效            //在执行工作项的过程中,是否把参数传递到WorkItem中去,用做IWorkItemResult接口取State时使用,            //如果设置为false那么IWorkItemResult.State是取不到值的            //如果设置为true可以取到传入参数的数组            stp.FillStateWithArgs = true;                      //当工作项执行完毕后,默认的回调方法            stp.PostExecuteWorkItemCallback = delegate(IWorkItemResult wir) { this.BeginInvoke(updateTxt, "-----------------ok" + wir.Result + "\r\n"); };            //是否需要等待start方法后再执行工作项,?默认为true,当true状态时,STP必须执行Start方法,才会为线程分配工作项            stp.StartSuspended = true;            stp.AreThreadsBackground = true;            m_hThreadPool = new SmartThreadPool(stp);//声明一个线程池                        foreach (int state in abc)            {                                //IWorkItemResult
resultCallback = m_hThreadPool.QueueWorkItem(new Amib.Threading.Func
(IntDoSomeWork), state); //m_hThreadPool.QueueWorkItem( (obj) => // { // Thread.Sleep(3000); // this.BeginInvoke(updateTxt, "正在执行" + state.ToString() + "\r\n"); // string str = "正在执行" + state.ToString() + "\r\n"; // return state * state; // }, state); //this.BeginInvoke(updateTxt, resultCallback.Result.ToString() + "\r\n"); } m_hThreadPool.Start(); m_hThreadPool.WaitForIdle();//等待该实例下的所有结果返回 //MessageBox.Show(resultCallback.Result.ToString()); m_hThreadPool.Shutdown();

 

转载于:https://www.cnblogs.com/wangchuang/p/4529003.html

你可能感兴趣的文章
实现如下语法的功能:var a = (5).plus(3).minus(6); //2
查看>>
MFC添加背景图片
查看>>
未找到arm-linux-gcc解决办法
查看>>
统计Xcode项目代码行数
查看>>
认识 service worker
查看>>
第五次团队作业:项目展示
查看>>
WIN10更新后,应用报“不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况”...
查看>>
C#面向对象(二):封装和继承
查看>>
range()函数
查看>>
cs20_3-3
查看>>
codevs1074 食物链
查看>>
少量标签下的模型
查看>>
17.python购物车程序作业
查看>>
lightoj 1027【数学概率】
查看>>
Apparmor——Linux内核中的强制访问控制系统
查看>>
HOJ-1005 Fast Food(动态规划)
查看>>
jQuery 杂项方法
查看>>
FasfDFS整合Java实现文件上传下载
查看>>
用Hadoop构建电影推荐系统
查看>>
[读码时间] 弹出层效果
查看>>