所以我只是想让我的服务层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