我正在使用await
/ async
开发ASP.NET MVC应用程序。我的控制器中有以下方法:
public async Task<ActionResult> PrintCachePartial()
{
var cacheItems = await cacheProvider.GetPrintCacheItems();
return View(cacheItems);
}
然后调用cacheProvider.GetPrintCacheItems()
:
public async Task<IEnumerable<PrintCacheItem>> GetPrintCacheItems()
{
var res = await atrServiceFacade.GetCacheList(CacheType.PrintCache);
var entities = DataSetToCacheItemEntities(res.dataSet).ToArray();
return entities;
}
这会调用atrServiceFacade.GetCacheList()
:
public Task<AtrDataSetResult> GetCacheList(CacheType cacheType)
{
var tcs = new TaskCompletionSource<AtrDataSetResult>();
var client = serviceFactory.GetATRServiceClient();
client.CacheListCompleted += (sender, args) => AsyncHelper.AsyncCompleted(sender, args, tcs);
client.CacheListAsync(cacheType);
return tcs.Task;
}
这只是SOAP服务的任务包装器。
看起来它工作正常,但问题是每次刷新页面时(调用控制器方法),IIS进程的CPU利用率提高了大约30%。所以很快达到100%。
我认为是因为await
/ async
,但我不确定。
我正在使用面向.NET 4的ASP.NET MVC 4.对于await
/ async
兼容性我正在使用Microsoft.Bcl.Async
库。
答案 0 :(得分:0)
就像我在上面的评论中提到的那样。我与await
/ async
没有任何关系。
只有在Visual Studio 2013 Update 2运行且解决方案打开时才显示高CPU。当我关闭VS一切都很好。
安装VS Update 3后,RC一切正常,所以这只是VS的错误。