【发布时间】:2014-07-18 14:30:57
【问题描述】:
试图了解服务器端 async/await 的使用。我的理解是只有当线程可以被释放时才有用。 如果我有:
[HttpGet]
public async Task<IEnumerable<MyObject>> Get()
{
return await Task<IEnumerable<MyObject>>.Run(() => DoThingsAndGetResults());
}
IEnumerable<MyObject> DoThingsAndGetResults()
{
// ...Do some CPU computations here...
IEnumerable<MyObject> result = myDb.table.Select().ToList(); // entity framework
// ...Do some CPU computations here...
return result;
}
线程会被释放吗?在这种情况下 Async/Await 没用吗?从 async/await 中获益的唯一方法是,如果我做一些更大的改变并这样做:
[HttpGet]
public async Task<IEnumerable<MyObject>> Get()
{
return await DoThingsAndGetResultsAsync();
}
async IEnumerable<MyObject> DoThingsAndGetResultsAsync()
{
// ...Do some CPU computations here...
IEnumerable<MyObject> result = await myDb.table.Select().ToListAsync(); // entity framework
// ...Do some CPU computations here...
return result;
}
【问题讨论】:
-
这是一段来自 TechEd 的关于异步编程的精彩视频 channel9.msdn.com/events/TechEd/NorthAmerica/2014/…
标签: c# asp.net-web-api async-await