2017-10-10 72 views
0
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(); 
     } 
    } 
} 

我試圖讓我的控制檯應用程序打印消息Hello Task library!。我目前使用下面的method 3。出於某種原因,當我在VS2015上按Ctrl + F5時,該應用程序顯示一個空白屏幕,並顯示消息Press any key to continue使用C代碼啓動任務

爲什麼我的郵件沒有打印。

回答

5

這是因爲您沒有wait ing爲您的任務完成。嘗試將task.Wait()添加到方法的末尾,並查看結果應該顯示。

更新:如果您正在使用Visual Studio 2017 Update 15.3或更高版本和C#7.1,現在支持asyncMain

可以按如下修改代碼:

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

    static async Task Main() 
    { 
     var task = new Task(PrintMessage); 
     task.Start(); 
     await task; 
    } 
}