C# 应该避免不必要的异步页面指令吗?
我注意到在我的网站上有几个地方我可以与第三方资源交流。我看到了一些建议(例如),这些代码应该异步运行,如果只是为了避免线程池饱和的话。假设我引入了如下几个函数:C# 应该避免不必要的异步页面指令吗?,c#,asp.net,asynchronous,.net-4.0,.net-4.5,C#,Asp.net,Asynchronous,.net 4.0,.net 4.5,我注意到在我的网站上有几个地方我可以与第三方资源交流。我看到了一些建议(例如),这些代码应该异步运行,如果只是为了避免线程池饱和的话。假设我引入了如下几个函数: public static void LoadThirdPartyInfo(/*Arguments*/) { Page page = (Page) HttpContext.Current.CurrentHandler; if(page.IsAsync) { page.AddOnPreRenderC
public static void LoadThirdPartyInfo(/*Arguments*/)
{
Page page = (Page) HttpContext.Current.CurrentHandler;
if(page.IsAsync)
{
page.AddOnPreRenderCompleteAsync( //...
}
else
{
//Oops...
}
}
此时,我可以:1.删除(或保留)else子句,并尽量小心仅在异步页面上调用它,可能会添加一些日志记录,以检测是否错误地执行了此操作。
2.与#1相同,但在新页面上使用
Async=“True”
。3.与#1相同,但在所有页面上使用
Async=“True”
我不确定引入不必要的页面异步指令是否存在风险。他们似乎什么也没打破
问题:引入伪异步指令可以吗?
注意:我使用的是.Net 4.0,但我对针对.Net 4.5的响应持开放态度。只需在页面中添加Async=true,而不激活任何特定于异步的代码路径即可。这样做将导致轻微的性能损失。这种惩罚通常是微不足道的,但是在你做了任何改变之后,再次对你的站点进行性能测试可能是一个好主意,只是为了确保没有任何倒退