c# 关于Task类处理多线程的学习
2012-12-12 15:47
666 查看
1.定义一个线程
var task1 = Task.Factory.StartNew(() => DoSomeWork());
方法如下:
View Code
private static object DoSomeWork()
{
Console.WriteLine("nihao ");
System.Threading.Thread.Sleep(3000);
Console.Write("nihao ");
return "xiexie";
}
2.多线程执行后,执行另一个方法
var task1 = Task.Factory.StartNew(() => DoSomeWork()).ContinueWith(
task => { Console.WriteLine(task.Result.ToString()); }).ContinueWith(
task => { Console.WriteLine(task.Result.ToString()); });
3.等待所有线程结束
var task1 = Task.Factory.StartNew(() => DoSomeWork());
var task2 = Task.Factory.StartNew(() => DoSomeWork());
var task3 = Task.Factory.StartNew(() => DoSomeWork());
Task.WaitAll(task1, task2, task3);
4.等待其中一个线程结束
var task1 = Task.Factory.StartNew(() => DoSomeWork());
var task2 = Task.Factory.StartNew(() => DoSomeWork());
var task3 = Task.Factory.StartNew(() => DoSomeWork());
Task.WaitAny(task1, task2, task3);
5.等待所有线程结束执行的方法
var task1 = Task.Factory.StartNew(() =>
{
Thread.Sleep(3000);
return "dummy value 1";
});
var task2 = Task.Factory.StartNew(() =>
{
Thread.Sleep(3000);
return "dummy value 2";
});
var task3 = Task.Factory.StartNew(() =>
{
Thread.Sleep(3000);
return "dummy value 3";
});
Task.Factory.ContinueWhenAll(new[] { task1, task2, task3 }, tasks =>
{
foreach (Task<string> task in tasks)
{
Console.WriteLine(task.Result);
}
});
var task1 = Task.Factory.StartNew(() => DoSomeWork());
方法如下:
View Code
private static object DoSomeWork()
{
Console.WriteLine("nihao ");
System.Threading.Thread.Sleep(3000);
Console.Write("nihao ");
return "xiexie";
}
2.多线程执行后,执行另一个方法
var task1 = Task.Factory.StartNew(() => DoSomeWork()).ContinueWith(
task => { Console.WriteLine(task.Result.ToString()); }).ContinueWith(
task => { Console.WriteLine(task.Result.ToString()); });
3.等待所有线程结束
var task1 = Task.Factory.StartNew(() => DoSomeWork());
var task2 = Task.Factory.StartNew(() => DoSomeWork());
var task3 = Task.Factory.StartNew(() => DoSomeWork());
Task.WaitAll(task1, task2, task3);
4.等待其中一个线程结束
var task1 = Task.Factory.StartNew(() => DoSomeWork());
var task2 = Task.Factory.StartNew(() => DoSomeWork());
var task3 = Task.Factory.StartNew(() => DoSomeWork());
Task.WaitAny(task1, task2, task3);
5.等待所有线程结束执行的方法
var task1 = Task.Factory.StartNew(() =>
{
Thread.Sleep(3000);
return "dummy value 1";
});
var task2 = Task.Factory.StartNew(() =>
{
Thread.Sleep(3000);
return "dummy value 2";
});
var task3 = Task.Factory.StartNew(() =>
{
Thread.Sleep(3000);
return "dummy value 3";
});
Task.Factory.ContinueWhenAll(new[] { task1, task2, task3 }, tasks =>
{
foreach (Task<string> task in tasks)
{
Console.WriteLine(task.Result);
}
});
相关文章推荐
- c# 关于Task类处理多线程的学习
- c# 关于Task类处理多线程的学习
- 关于C#多线程的学习和一点疑惑
- [深入学习C#]C#实现多线程的方式:Task——任务
- [深入学习C#]C#实现多线程的方式:Task——任务
- Python模块学习 ---- threading 多线程控制和处理
- 关于c#中的事件处理机制
- MATLAB学习笔记四(关于图像处理)
- Python模块学习:threading 多线程控制和处理
- OpenCV关于视频处理的学习(VideoCapture类)-在检测中一些必要的图像操作
- C#关于Windows窗体最大化所引起的闪烁问题的处理经验
- 关于c#中的消息处理函数和vc中的消息处理函数区别(引自ucucf的专栏)
- 关于多线程编程您不知道的 5 件事 有关高性能线程处理的微妙之处
- Python模块学习 ---- threading 多线程控制和处理
- 编写高质量代码改善C#程序的157个建议——建议85:Task中的异常处理
- 关于C#的@字符的学习笔记(摘自百度文库)
- 关于Unity的C#基础学习(五)
- C#温故而知新学习系列之字符串处理—指定字符串的显示格式(一)