San*_*tar 2 c# task-parallel-library async-await c#-5.0 asp.net-mvc-4
我有一个调用数据库的方法,如下所示:
BL方法调用DAO方法:
public async Task<List<Classes>> GetClassesAndAddRules(string classId)
{
var classData = await Task.Run( () => _daoClass.GetClasses(classId));
//logic for adding rule
//..................................
}
Run Code Online (Sandbox Code Playgroud)
DAO中的DatabaseCall:
//*below method takes 1 second approx to return*
public List<Classes> GetClasses(string id)
{
var retVal = new List<Classes>();
using (var context = new test_db_context())
{
var rows = context.GetClassesById(id);
foreach (ClassesDBComplexType row in rows)
{
retVal.Add(Mapper.Map<GetClassesByClassIdOut>(row));
}
}
return retVal;
}
Run Code Online (Sandbox Code Playgroud)
只是我使用await调用DAO方法有什么性能提升吗?
我的理解是GetClasses()将在一个单独的线程上调用,这样它就不会阻塞并继续处理其他东西.
任何帮助表示赞赏.
您发布的代码无法编译.从问题的标题来看,我假设你的电话实际上是这样的await Task.Run(() => _daoClass.GetClasses(classId));
在这种情况下,使用Task.Run 会对性能产生影响:情况会更糟.
的点async在服务器端是释放所述请求线程,而不是阻止它.你正在做的await Task.Run(...)是通过开始另一个线程的工作来释放请求线程.换句话说,Task.Run代码具有相同的工作量和线程编组.
| 归档时间: |
|
| 查看次数: |
1417 次 |
| 最近记录: |