為什麼要使用任務? 上一篇博客中提到了線程池ThreadPool,可以調用QueueUserWorkItem方法來發起一次非同步的操作。但是這個技術存在許多限制,最大的問題是沒有一個內建的機制讓你知道操作在什麼時候完成,也沒有一個機制在操作完成時獲得一個返回值。 為了剋服這些限制,微軟引入了Task的 ...
為什麼要使用任務?
上一篇博客中提到了線程池ThreadPool,可以調用QueueUserWorkItem方法來發起一次非同步的操作。但是這個技術存在許多限制,最大的問題是沒有一個內建的機制讓你知道操作在什麼時候完成,也沒有一個機制在操作完成時獲得一個返回值。
為了剋服這些限制,微軟引入了Task的概念。
怎麼簡單的使用任務?
例如:在開始任務之後,等待它完成並獲得結果。
class Program
{
static void Main(string[] args)
{
Task<Int32> t = new Task<int>(n=>Sum((int)n),1000);
t.Start();
t.Wait();//調用wait方法,線程會阻塞,直到Task運行結束為止。
Console.WriteLine("The Sum is :"+t.Result);
Console.ReadLine();
}
private static int Sum(int n)
{
int sum = 0;
for (; n > 0;n-- )
{
sum += n;
}
Thread.Sleep(3000);//等待一下 便於查看測試結果
return sum;
}
}