C# Task类 笔记
来源:互联网 发布:高性能服务器编程 pdf 编辑:程序博客网 时间:2024/06/06 13:57
运行
namespace Example{ class MyApplication { public static void Main() { Task t = Task.Run(() => { for (int i = 0; i < 100; i++) Console.WriteLine(i); }); t.Wait(); } }}
返回一个值
namespace Example{ class MyApplication { public static void Main() { Task<int> t = Task.Run(() => { return 40; }); Console.WriteLine(t.Result); //输出40 } }}
ContinueWith
namespace Example{ class MyApplication { public static void Main() { Task<int> t = Task.Run(() => { return 40; }); t.ContinueWith((i) => { Console.WriteLine("Canceled"); }, TaskContinuationOptions.OnlyOnCanceled); t.ContinueWith((i) => { Console.WriteLine("Faulted"); }, TaskContinuationOptions.OnlyOnFaulted); var completedtask=t.ContinueWith((i) => { Console.WriteLine("Completed"); }, TaskContinuationOptions.OnlyOnRanToCompletion); completedtask.Wait(); Console.WriteLine(t.Result); } }}
父线程将会在子线程结束后结束
namespace Example{ class MyApplication { public static void Main() { Task<Int32[]> parent = Task.Run(() => { var result = new Int32[3]; new Task(() => result[0] = 0, TaskCreationOptions.AttachedToParent).Start(); new Task(() => result[1] = 1, TaskCreationOptions.AttachedToParent).Start(); new Task(() => result[2] = 2, TaskCreationOptions.AttachedToParent).Start(); return result; }); var finalTask = parent.ContinueWith(parentTask => { foreach (int i in parentTask.Result) { Console.WriteLine(i); } }); finalTask.Wait(); } }}
使用TaskFactory
namespace Example{ class MyApplication { public static void Main() { Task<Int32[]> parent = Task.Run(() => { var result = new Int32[3]; TaskFactory tf = new TaskFactory(TaskCreationOptions.AttachedToParent, TaskContinuationOptions.ExecuteSynchronously); tf.StartNew(() => result[0] = 0); tf.StartNew(() => result[1] = 1); tf.StartNew(() => result[2] = 2); return result; }); var finalTask = parent.ContinueWith(parentTask => { foreach (int i in parentTask.Result) { Console.WriteLine(i); } }); finalTask.Wait(); } }}
Task.WaitAlL 等待提供的所有 Task 对象完成执行过程。
Task.WaitAny 等待提供的任何 Task 对象完成执行过程。
0 0
- C# Task类 笔记
- C#笔记23:多线程之Task(并行编程)
- C# TASK 使用实例
- C# 多线程task
- c#多线程之Task
- C# Task的使用
- C# Task 多线程
- C# Task 用法
- C#并行编程-Task
- C# Task.WhenAll Parallel
- C# Task.WhenAll Parallel
- C# Task的用法
- c# Task返回值
- C#中的thread和task之Task
- c# 关于Task类处理多线程的学习
- android Task 学习笔记
- ant学习笔记-task
- Task类
- Java Comparator 排序
- 【解决方法】Setup script exited with error: command 'cc' failed with exit status 1
- HTTP协议详解(真的很经典)
- HTML学习记录<一>:<abbr>及<acronym>
- matlab中sum函数对矩阵的求和总结
- C# Task类 笔记
- Linux守护进程设计规范及python实现http://blog.csdn.net/dysj4099/article/details/18219411
- 黑马程序员——面向对象之异常(二)
- Java 调用dll
- 不要用memcmp比较structure
- adb shell dumpsys的使用
- iOS软件开发 类目延展协议的使用
- linux C守护进程编写http://www.cnblogs.com/ringwang/p/3528093.html
- BNUOJ 弱校联萌十一大决战之强力热身B Carries(二分)