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

Joh*_*lin 0 c# console task wait task-parallel-library

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

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

Yuv*_*kov 5

因为你永远不会开始Task.使用Task构造函数需要您调用Task.Start返回的任务.这就是为什么建议使用Task.Run,它返回一个"热门任务"(已启动的任务):

文件:

而不是调用此构造函数,实例化Task对象并启动任务的最常用方法是调用static Task.Run(Action)TaskFactory.StartNew(Action)method.此构造函数提供的唯一优势是它允许将对象实例化与任务调用分开.

所以代码应该是:

public static void Main()
{
    Task t = Task.Run(() =>
    {
        for (int x = 0; x < 100; x++)
        {
            Console.Write('*');
        }
    });

    t.Wait();
}
Run Code Online (Sandbox Code Playgroud)