Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 应该避免不必要的异步页面指令吗?_C#_Asp.net_Asynchronous_.net 4.0_.net 4.5 - Fatal编程技术网

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,而不激活任何特定于异步的代码路径即可。这样做将导致轻微的性能损失。这种惩罚通常是微不足道的,但是在你做了任何改变之后,再次对你的站点进行性能测试可能是一个好主意,只是为了确保没有任何倒退