任务Task
程序员文章站
2024-01-15 18:44:16
为什么要使用任务? 上一篇博客中提到了线程池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;
}
}