在C#中使用委托启动任务

liv*_*hak 0 c# task

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TaskStart
{
    class Program
    {
        private static void PrintMessage()
        {
            Console.WriteLine("Hello Task library!");
        }
        static void Main(string[] args)
        {
            //method 1
            //Task.Factory.StartNew(() => { Console.WriteLine("Hello Task library!");});

            //method 2
            //Task task = new Task(new Action(PrintMessage));
            //task.Start();

            //method3
            Task task = new Task(delegate { PrintMessage(); });
            task.Start();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想让我的控制台应用程序打印消息Hello Task library!.我目前正在使用method 3下面.出于某种原因,Press any key to continue当我按下Ctrl + F5VS2015 时,应用程序显示一个空白屏幕,并显示消息.

为什么我的信息没有打印出来.

Ank*_*jay 5

这是因为您无法wait完成任务.尝试添加task.Wait()到方法的末尾并查看应显示的结果.

更新:如果您使用的是Visual Studio 2017 Update 15.3或更高版本以及C#7.1,则现在支持async Main.

您可以按如下方式修改代码:

class Program
{
    private static void PrintMessage()
    {
        Console.WriteLine("Hello Task library!");
    }

    static async Task Main()
    {
        var task = new Task(PrintMessage);
        task.Start();
        await task;
    }
}
Run Code Online (Sandbox Code Playgroud)