2016-03-11 62 views
0

爲什麼返回Task的方法在返回實例時未得到執行。我以爲這一定會發生,因爲await ing方法/代理人將 放入一些隊列並稍後執行結果任務。使用等待和自制異步方法的問題

那麼爲什麼當調用Do()時這個Task永遠不會被執行?

public void Do() 
{ 
    SomeTask().Wait() 
} 

public async Task SomeTask() 
{ 
    return new Task(() => { Console.WriteLine("Hello World!") }); 
} 

編輯

或者我alwas需要await Task.Run(...)

非常感謝!

回答

6

您正在創建一個Task但從未啓動它,所以它不可能完成。

使用Task.Run返回一個「熱」(開始)Task代替:

return Task.Run(() => { Console.WriteLine("Hello World!") }); 

此外,async關鍵字是不必要的,因爲你不等待所創建的任務。

+0

你最後的提示做到了!謝謝! +1 – BendEg

+1

對於'async',返回的是'Task '。 –