惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
博客园_首页
U
Unit 42
Apple Machine Learning Research
Apple Machine Learning Research
云风的 BLOG
云风的 BLOG
MongoDB | Blog
MongoDB | Blog
美团技术团队
H
Help Net Security
G
Google Developers Blog
B
Blog RSS Feed
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
aimingoo的专栏
aimingoo的专栏
Google DeepMind News
Google DeepMind News
J
Java Code Geeks
M
MIT News - Artificial intelligence
腾讯CDC
IT之家
IT之家
Vercel News
Vercel News
C
Check Point Blog
博客园 - 三生石上(FineUI控件)
Last Week in AI
Last Week in AI
I
InfoQ
博客园 - 司徒正美
A
About on SuperTechFans

博客园 - 上海-天浩

ASP.NET WebApi(.Net Framework) 应用CacheManager 软件工程的核心问题并非是编程 C# 生产消费模式 C# ConcurrentQueue 处理多任务 最近忙的一个项目(B/S) 共享设备综合运营管理系统(自研) 自动充值机 面向对象的七种设计原则 SQL server 添加主外键约束 做过的项目 诗二首 诗三首 开源大全 C# PowerPoint操作的基本用法。 无锡质检局实验室管理系统 交互式电子白板 自己开发的 漂亮音乐播放器 钥匙齿形识别系统
c# 线程池多任务处理并返回值
上海-天浩 · 2021-03-12 · via 博客园 - 上海-天浩

先新建一个封装类 包含 manual和返回值 

using System;
using System.Threading;
public class ThreadReturnData
{
public ManualResetEvent manual;
public string res;

public void ReturnThreadData(object obj)
{
//操作方法
res = DoSomething(obj);
manual.Set();
}
}

//-------------------------------------------------------------------------------------------------

List<ThreadReturnData> testList = new List<ThreadReturnData>();
IList<ManualResetEvent> arrManual = new List<ManualResetEvent>();
for (int i = 0; i < i; i++)
{
ThreadReturnData temp = new ThreadReturnData();
temp.manual = new ManualResetEvent(false);
arrManual.Add(temp.manual);
ThreadPool.QueueUserWorkItem(new WaitCallback(temp.ReturnThreadData), i);
testList.Add(temp);
}
}
if (arrManual.Count > 0)
{
////等待所有线程执行完
WaitHandle.WaitAll(arrManual.ToArray());
}
foreach (ThreadReturnData d in testList)
{
d.res;
//dowork
}