您的位置:首页 > 编程语言 > C#

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);

}

});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: