技术探索

.NET4.0新增的Task功能初试

2013-05-18
4269

.NET4.0有一个新增的Task功能可以执行多线程操作,并按需返回指定类型的值。使用非常方便,比之前的线程池、回调等方法好用得多。本文简单介绍这一功能的使用,供初学者参考。

 

引用命名空间

using System.Threading.Tasks


启动执行并返回结果值

var a = Task<string>.Factory.StartNew(()=>
{
    //这里是执行方法
    string a = "a";
    return a;
};

//或者以下也可以启动
var a = Task.Factory.StartNew(()=>
{
    return "a";
};

//等待执行完成,若非要等待所有方法全部执行完成后再进行后续操作,也可以省略
Task.WaitAll(a);

//获得返回值,上例中输出为 "a"。
MessageBox.Show(a.Result);


如果有连续两个任务,且第二个任务必须要等第一个任务执行完成后才能启动,则可以

var b = a.ContinueWith(lastTask=>
{
    return "b" + lastTask.Result;  //lastTask是任意命名的参数,即代表上一个任务
});

//输出值为 "ba"
MessageBox.Show(b.Result);


是不是很简单呢?本文仅简单介绍其使用,当然Task远不止这一点应用,有兴趣的同学可以进一步学习。