2012年12月24日 星期一

CS1998號錯誤:同步還是非同步?

在測試async 與await關鍵字時,發現有時Visual Studio的錯誤訊息怪怪的,程式如下:

static async void AddAsync( ) {
  Console.WriteLine( "AddAsync Thread ID : " +
    Thread.CurrentThread.ManagedThreadId.ToString( ) );
  Task<int> t = Task.Run( ( ) => Add( 10 , 50 ) ); 
  Console.WriteLine( "after await" ); 
  Console.WriteLine( "Result : " + t.Result.ToString( ) );
}

若未在async方法中,使用await關鑑字,發現Visual Studio 2012編譯時,會出現以下錯誤訊息:

warning CS1998: 這個非同步方法缺少 'await' 運算子,因此將以非同步方式執行…

 

如下圖:

image

可是有時又怪怪的,說是以同步方式執行,以為眼花重新編譯好幾次….

image

最後決定把相同的程式拿到英文版的Visual Studio 2012上執行,結果訊息如下….

image

結論:應該中文版翻錯了吧!!

沒有留言:

總瀏覽量