所以我只是想讓我的服務層async
。ASP NET MVC 5任務異步創建一個異步方法
我有一個新的服務ProjectManagement
,我希望它的GetProjects
方法是異步的。
public Task<string> GetProjectsAsync()
{
var json = JsonConvert.SerializeObject(_repository.All<Projects>());
return json;
}
我知道這個方法行不通,顯然是因爲我返回一個字符串,而不是一個Task<string>
。那麼如何使用Task.Run()
來運行此方法並返回結果呢?
我看過這個documentation,我對如何使用它有點困惑?
所有我希望能夠在我的控制器做的是:
var jsonData = await _projectManagement.GetProjectsAsync();
使方法異步的唯一真正原因是如果你可以異步執行IO。如果你不能,你可以把它作爲同步方法。 – Servy
當你有返回類型的方法「任務」時返回一個字符串是正確的行爲。只需在你的'GetProjectsAsync()'方法之前放置async即可。 –
Abhijeet
@Abhijeet這是一個可怕的想法。這是創建一個同步的方法,只是將其結果包裝在一個任務中,實質上是聲明它是異步的謊言。你不應該那樣做。如果你不想讓這個方法異步,你不應該對你的調用者撒謊,並聲稱你是異步的。 – Servy