我在整个应用程序中有大量[WebMethod]
,我希望我的所有[WebMethod]
都是异步的。我使用异步和等待关键字装饰了所有[WebMethod]
个签名,然后运行我的应用程序。它没有达到预期的效果。假设我有以下代码
背后的代码
[WebMethod]
public static async Task<List<XXX>> GetXXX()
{
return await new BusinessLogic().GetXXX().ConfigureAwait(false);
}
业务层
internal async Task<List<XXX>> GetXXX()
{
var obj = await objDAL.GetXXX().ConfigureAwait(false);
List<XXX> listDO = new List<XXX>();
foreach (var item in obj)
{
listDO.Add(new Countries
{
XXXName = item.name,
XXXID = item.id
});
}
return listDO;
objDAL.GetXXX
internal async Task<List<tblXXX>> GetXXX()
{
using (ABCEntities ctx = new ABCEntities())
{
return await ctx.tblXXX.ToListAsync().ConfigureAwait(false);
}
}
我已将调试器放在上面代码到return await ctx.tblXXX.ToListAsync();
的整个路径中,然后调试器失去控制,系统变得无响应。
我发现old solutions没有使用async
的强大功能
和await
。
问题是我如何制作我的WebMethod函数asyc
。
由于