C#任务未完成(命令提示符中没有结果)

时间:2015-12-13 15:05:24

标签: c# console task-parallel-library task wait

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

    }
}
  • 此应用程序编译并运行显示空白屏幕(等待任务完成)
  • 任务处于等待状态
  • 没有输出显示/写入控制台
  • 为什么不呢?
  • 申请永久保持“等待”状态
  • 为什么?
  • 代码目标:启动新任务,等待任务完成,退出应用程序

1 个答案:

答案 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();
}