是否应该避免不必要的Async Page指令?

时间:2014-08-25 18:30:52

标签: c# asp.net asynchronous .net-4.0 .net-4.5

我注意到我网站上的一些地方与第三方资源交谈。我已经看到了一些建议(例如,MSDN Magazine: Asynchronous Pages in ASP.NET 2.0),这些代码应该异步运行,只是为了避免使线程池饱和。假设我引入了几个这样的函数:

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"

我不确定引入不必要的Page Async指令是否存在风险。他们似乎 无法打破任何事情。

问题:引入虚假异步指令是否可以?

注意:我使用的是.Net 4.0,但我们可以针对.Net 4.5进行回复。

1 个答案:

答案 0 :(得分:2)

只需将 Async = true 添加到页面而不激活任何特定于异步的代码路径就可以了。这样做会导致轻微的性能损失。罚款通常是微不足道的,但在您做出任何改变之后再次测试您的网站可能是一个好主意,以确保没有任何退步。