我看到了这段代码:
[HttpGet]
public async Task OperationAsync()
{
await Task.Delay(2000);
}
...在#7 here提示中,我想我会尝试一下。我改变了这段代码:
[HttpGet]
[Route("api/Deliveries/Count")]
public int GetCountOfDeliveryRecords()
{
return NRBQService.GetNRBQEntity();
}
......对此:
// [HttpGet] unnecessary when method name begins with "Get"
[Route("api/Deliveries/Count")]
public async Task<int> GetCountOfDeliveryRecords()
{
return await Task.NRBQService.GetNRBQEntity();
}
...但是得到,“'System.Threading.Tasks.Task'不包含NRBQService的定义'”
那么我应该怎么做才能让它编译/工作?
答案 0 :(得分:4)
您只能等待Task
或Task<T>
(也可等待其他等待,但您不太可能需要使用其中一个)。 Task.Delay
是一个返回Task
的异步方法。这允许你写:
await Task.Delay(2000);
NRBQService.GetNRBQEntity
是一种返回int
的方法,因此无法等待。您需要创建一个返回Task<int>
的异步方法,如下所示:
public async Task<int> NRBQService.GetNRBQEntityAsync()
{
// ...
}
你可以这样使用它:
[Route("api/Deliveries/Count")]
public async Task<int> GetCountOfDeliveryRecords()
{
return await NRBQService.GetNRBQEntity();
}