.net 4.0新增性能----Task
来源:互联网 发布:淘宝直通车如何操作 编辑:程序博客网 时间:2024/06/05 12:49
一:Task
1. 最简单的使用
开启task有两种方式:
<1> 实例化Task
var task1 = new Task(() =>
{
StartAdd();
});
task1.Start();
public static void StartAdd()
{
string value = null;
for (int i = 0; i < 1000; i++)
{
td.TryAdd(i, i.ToString());
}
for (int i = 0; i < 1000; i++)
{
td.TryGetValue(i, out value);
Console.WriteLine(value);
}
}
<2>从工厂中创建
Task.Factory.StartNew(() => Console.WriteLine("1"));
var task2 = Task.Factory.StartNew(() =>
{
StartAdd();
});
Task的waitAny和waitAll方法
var tasks = new Task[3];
for (int i = 0; i < tasks.Length; i++)
{
int taskIndex = i;
tasks[i] = Task.Factory.StartNew(() =>
{
int seed = Guid.NewGuid().GetHashCode();
int waitTime = new Random(seed).Next(10, 100);
Thread.Sleep(waitTime);
Console.WriteLine("Task{0} Finished", taskIndex);
});
}
Task.WaitAny(tasks);
Console.WriteLine("Here is one job finish");
取消一个Task
创建一个取消的Task一般要进行下面一些步骤:
a.创建System.Threading.CancellationTokenSource的一个实例:
b.通过CancellationTokenSource.Token属性获得一个System.Threading.CancellationToken:
c.创建一个新的Task或者Task<T>,并且在构造函数传入Action或者Action<object>的委托作为第一个参数,传入CancellationToken作为第二个参数:
var cancelTokenSource = new CancellationTokenSource();
Task.Factory.StartNew(() =>
{
while (!cancelTokenSource.IsCancellationRequested)
{
Console.WriteLine(DateTime.Now);
Thread.Sleep(1000);
}
}, cancelTokenSource.Token);
Console.WriteLine("Press any key to cancel");
Console.ReadLine();
cancelTokenSource.Cancel();
Console.WriteLine("Done");
Console.ReadLine();
- .net 4.0新增性能----Task
- NET 4.0 任务(Task)
- NET 4.0 Task用法
- .NET 4.0 任务(Task)
- .NET使用Task Parallel Library提高程序性能
- .NET 4.0中数组的新增功能
- ADO.NET 2.0 中的新增 DataSet 功能--性能提高44倍?(GridView VS Datagrid)
- .NET中的Task
- .Net Task常见问题
- .NET Framework 4.0 中数组的新增功能
- ADO.NET Entity Framework 4.0 的新增功能
- Task Scheduler in C#.Net
- .net Async await Task<T>
- .Net 异步编程之Task
- .NET Task的新认识
- .NET Task揭秘(一)
- lucene.net 如何新增文档/?
- ADO.NET的新增功能
- Android Design Support Library 介绍
- spring加载jar包中的application.xml文件
- windows下搭建ffmpeg+nginx+rtmp-module搭建实时视频环境
- sql sever if exists用法
- 智能指针
- .net 4.0新增性能----Task
- layout_graviry和gravity的区别及需要注意的问题
- 代码段,数据段,BSS段, 堆,栈, 参数
- Tree 递归
- Mac os x captain 10.11.1 安装boost库 及配置Xcode
- System V 中内存共享的简单实例
- poj 3321 Apple Tree
- Linux---有关dig命令的实用脚本
- 数据采集主要代码