我正在构建一个RESTful Web API,它将触发多个任务,等待它们完成然后返回一些数据。但是我一直在等待,似乎挂起了问题。我按最基本的比例缩小了比例:
[Authorize]
public class ValuesController : ApiController
{
public IEnumerable<string> Get([FromUri]bool enableWait)
{
Task t = Silly(enableWait);
t.Wait();
return new string[] { "value1", "value2" };
}
private async Task Silly(bool delay)
{
if (delay)
await Task.Delay(1);
}
}
如果我通过false,则返回没有任何问题。如果返回true,则应等待1毫秒(加上Task / Asnyc开销),然后返回。但是它只是挂在那里。
我正在VS 2017附带的IIS Express上运行它。有什么线索吗?
答案 0 :(得分:5)
实施member
时,您需要确保自始至终地实现它。您的控制器操作必须为async/await
,并且需要async
您的await
方法:
Silly()
您还必须确保您的public async Task<IEnumerable<string>> Get()
{
return await Silly();
}
方法正在调用所需的正确异步方法,并确保您Silly()
正在使用它们。