2014-12-01 92 views
-1

我實現一個接口C#任務不是一個任務

Task Something() 

,但沒有在執行代碼時調用異步

Task Something(){ 
    var x=1; 
    return null; 
} 

這在錯誤路線的結果:

await Something() 

如何發回空白任務以使界面快樂?

回答

6

您可以使用Task.FromResult返回已完成的任務。

Task Something() 
{ 
    var x=1; 
    // Do *something* here ;) 
    return Task.FromResult(true); 
} 

請注意,這將同步運行,而不是一個異步操作,所以最好也適當地記錄。

0

如果期望異步,爲什麼不使它成爲異步?

Task Something() 
{ 
    return Task.Run(() => { /* your code here */ }); 
} 
0

爲了等待任何方法,它需要有一個異步簽名所以爲了等待的東西()應當作出這樣的:

async Task Something() 
{ 
    //do stuff 
} 

請記住,當你想返回一個值,你應該返回一個任務,如果你想返回void,你應該只返回一個任務

+0

它不需要被標記爲異步等待它 - 異步是一個實現細節。它只需要返回可以等待的任務,如任務。 – 2014-12-01 20:23:37