using System;
using System.Threading.Tasks;
namespace _1._8_Starting_A_New_Task
{
public static class Program
{
public static void Main()
{
Task t = new Task(() =>
{
for (int x = 0; x < 100; x++)
{
Console.Write('*');
}
});
t.Wait();
}
}
}
答案 0 :(得分:5)
因为你永远不会启动Task
。使用Task
constructor要求您在返回的任务上调用Task.Start
。这就是为什么建议使用Task.Run
代替它,它返回一个“热门任务”(已启动的任务):
文档:
不是调用这个构造函数,而是最常用的方法 实例化一个Task对象并通过调用static来启动任务
Task.Run(Action)
或TaskFactory.StartNew(Action)
方法。唯一 这个构造函数提供的优点是它允许对象 实例化与任务调用分开。
所以代码应该是:
public static void Main()
{
Task t = Task.Run(() =>
{
for (int x = 0; x < 100; x++)
{
Console.Write('*');
}
});
t.Wait();
}