using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks; public class Example
{
public static void Main()
{
var qTasks = new List<Task<string>>();
var paralist = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
foreach (var para in paralist)
{
//StartNew 只接受输入参数是object类型的Func
var fun = new Func<object, string>(
(pa) =>
{
//pa 是Func的定义参数
Console.WriteLine("para is {0}", pa);
//Thread.Sleep(new Random().Next(500, 3000));
int ipa = Convert.ToInt32(pa);
int result = ipa * 5;
return result.ToString();
}
); var task = Task.Factory.StartNew(fun, para); //para是传入参数
qTasks.Add(task);
Console.WriteLine(" task id is {0}", task.Id);
} Task.WaitAll(qTasks.ToArray()); //等待所有线程执行完毕 //收集所有task返回的数据
foreach (var task in qTasks)
{
if (task.Result != null)
{
Console.WriteLine("task id : {0} , result : {1} ", task.Id, task.Result);
}
} Console.ReadKey();
}
}

  

有时候会需要用到ManualResetEvent来等待其他线程是否执行完毕,用法如下:

using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks; public class Example
{
static ManualResetEvent manualEvent = new ManualResetEvent(false); public static void Main()
{
manualEvent.Reset(); //等同于将initialState设置为false Console.WriteLine("In main ..");
LongTimeFunc(); manualEvent.WaitOne(10000); Console.WriteLine("wait thread finish..."); Console.ReadKey();
} private static void LongTimeFunc()
{
//Thread 多数时候可以使用Task代替,此刻thread设置为STA,所以这么用
Thread thread = new Thread(new ParameterizedThreadStart(ExecuteFunc));
thread.SetApartmentState(ApartmentState.STA);
thread.IsBackground = true;
thread.Start("real parameters"); //ExecuteFunc 函数从此处传入参数
} private static void ExecuteFunc(object obj)
{
//long time operation
Thread.Sleep(2000);
Console.WriteLine(obj.ToString());
manualEvent.Set();
}
}

  

task code的更多相关文章

  1. UWP -- Background Task 深入解析

    原文:UWP -- Background Task 深入解析 1. 重点 锁屏问题 从 Windows 10 开始,用户无须再将你的应用添加到锁屏界面,即可利用后台任务,通用 Windows 应用必须 ...

  2. 【FreeRTOS学习03】小白都能懂的Task Management 任务管理基本概念介绍

    在FreeRTOS中,线程的术语又可以被称之为任务,或许这样更加合适,本文将介绍任务的创建/删除,任务参数的使用,以及任务优先级: 1 软实时和硬实时 硬实时系统的任务运行正确性与响应时限是紧密相关的 ...

  3. java多线程系类:JUC线程池:03之线程池原理(二)(转)

    概要 在前面一章"Java多线程系列--"JUC线程池"02之 线程池原理(一)"中介绍了线程池的数据结构,本章会通过分析线程池的源码,对线程池进行说明.内容包 ...

  4. Windows 通用应用尝试开发 “51单片机汇编”总结

    一.前言 终于完成windows通用应用“51单片机汇编”,半年前开始玩WindowsPhone开发的第一个真正意义上的App(还很多缺点=_=).开发从1月中旬考完试到今天,期间实习了半个月,玩了几 ...

  5. Java多线程系列--“JUC线程池”03之 线程池原理(二)

    概要 在前面一章"Java多线程系列--“JUC线程池”02之 线程池原理(一)"中介绍了线程池的数据结构,本章会通过分析线程池的源码,对线程池进行说明.内容包括:线程池示例参考代 ...

  6. uC/OS-II任务(OS_task)块

    /*************************************************************************************************** ...

  7. uC/OS-II汇编代码

    ;*************************************************************************************************** ...

  8. uC/OS-II内核的服务文件

    /*************************************************************************************************** ...

  9. Oracle 使用小计(4)

    1.oracle字符串分割函数split )定义split_type类型: CREATE OR REPLACE TYPE split_type IS TABLE OF VARCHAR2 (4000) ...

随机推荐

  1. Matlab求三重积分

    Matlab求三重积分 求 \(\int_0^1 \int_0^1 \int_0^1 sin(\pi x_1 x_2 x_3) dx_1 dx_2 dx_3\) 代码是: triplequad(@(x ...

  2. python virtual env 使用 jupyter ipython notebook,舒服了, 工作效率翻倍

    话不多说,尊重原作者 知乎链接

  3. ionic:temple

    ylbtech-ionic:temple 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部     6.返回顶部   作者:ylbtech出处:http://ylb ...

  4. 安装mongo

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_40101530/articl ...

  5. SonarQube代码质量扫描持续集成

    1.安装JDK和配置JAVA_HOME和CLASSPATH 2.安装mysql数据库 3.创建数据库和用户 mysql -u root -p mysql> CREATE DATABASE son ...

  6. MySQL 不用 Null 的理由

    Null 貌似在哪里都是个头疼的问题,比如 Java 里让人头疼的 NullPointerException,为了避免猝不及防的空指针异常,千百年来程序猿们不得不在代码里小心翼翼的各种 if 判断,麻 ...

  7. wish - 简单的窗口式(windowing) shell

    总览 wish [filename] [arg] [arg ...] 选项 -colormap new 指定窗口使用一个新的私有的调色板(colormap)而不使用给屏幕的缺省的调色板. -displ ...

  8. 【笔记篇】单调队列优化dp学习笔记&&luogu2569_bzoj1855股票交♂易

    DP颂 DP之神 圣洁美丽 算法光芒照大地 我们怀着 崇高敬意 跪倒在DP神殿里 你的复杂 能让蒟蒻 试图入门却放弃 在你光辉 照耀下面 AC真心不容易 dp大概是最经久不衰 亘古不化的算法了吧. 而 ...

  9. 让er studio 生成带说明的sql

    一直使用er studion 来建数据库的模型图. 用了几年苦于 erstudion 不能生成带说明注释的sql 语句,每次生成实体之后都要自己去加注释. 今天根据外国朋友的资料找到了办法 需要自己建 ...

  10. SQL一些记录

    1,2字段约束create unique index [索引名] on 软件信息表(S_SName,S_Edition)