2012-10-22 69 views
3

我寫了下面的代碼,.NET 4.5異步語法

Task.Factory.StartNew<int>(async() => 
     { 
      await Task.Delay(1000); 
      return 42; 
     }); 

但「異步」關鍵字下的讀線出現,並且代碼不能由於一些語法錯誤編譯,有誰能夠告訴我什麼做?

Thx很多!

回答

5

你可能想使用Task.Run,它具有更自然的語法async lambda表達式:

var task = Task.Run(async() => 
{ 
    await Task.Delay(1000); 
    return 42; 
}); 
+0

+1不錯的一個人也沒有=) –

2

你必須返回一個Task<T>,像這樣:

Task.Factory.StartNew<Task<int>>(async() => 
{ 
    await Task.Delay(1000); 
    return 42; 
}); 

async關鍵字要求返回TaskTask<T>void。詳細瞭解它:async (C# Reference)

相關問題