Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.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# 在ASP.NET Classic中,ConfigureWait(false)是否会导致连续在多个线程上并行执行?_C#_Asp.net_.net_Multithreading_Parallel Processing - Fatal编程技术网

C# 在ASP.NET Classic中,ConfigureWait(false)是否会导致连续在多个线程上并行执行?

C# 在ASP.NET Classic中,ConfigureWait(false)是否会导致连续在多个线程上并行执行?,c#,asp.net,.net,multithreading,parallel-processing,C#,Asp.net,.net,Multithreading,Parallel Processing,在ASP.NET(经典)中,当将等待配置为ConfigureAwait(false)时,默认上下文用于在等待后恢复执行,而不是AspNetSynchronizationContext 根据(下表三分之二)AspNetSynchronizationContext实现为一次执行一个延续。默认的SynchronizationContext并行执行continuations,可能一次在多个线程中执行 因此,我的问题是,基于这些信息,应用ConfigureWait(false)是否真的可能导致contin

在ASP.NET(经典)中,当将等待配置为
ConfigureAwait(false)
时,默认上下文用于在等待后恢复执行,而不是
AspNetSynchronizationContext

根据(下表三分之二)
AspNetSynchronizationContext
实现为一次执行一个延续。默认的
SynchronizationContext
并行执行continuations,可能一次在多个线程中执行

因此,我的问题是,基于这些信息,应用ConfigureWait(false)是否真的可能导致continuations并行运行,一个http请求一次占用多个线程


另一方面,在ASP.NET Core中打开
SynchronizationContext
之后,Stephen警告说存在隐式并行性,因为不存在
AspNetSynchronizationContext

,您似乎已经通过引用Stephen Cleary的文章回答了这个问题;)是的!:)我只需要确认一下这就是正在发生的事情。我看不到任何地方讨论过它,这篇文章是关于ASP.NET核心的,不是经典的。在使用ConfigureAwait(false)时,单个http请求可以并行占用多个线程,这对我来说似乎是一件大事,但在任何地方都没有讨论过。如前所述,
ConfigureAwait(false)
应该只在库中使用,在库中,您不关心在哪个线程/上下文上继续执行。在ASP.NET代码中,您不使用它,因此执行在一个上下文/线程中继续,您不需要担心并行性,但我们在ASP.NET项目中使用它,我知道很多项目也使用它。那么这里发生了什么?我从未读过任何警告不要在ASPNET中使用ConfigureAwait(false)的内容。由此可知:如果在需要上下文的方法中有等待之后的代码,则不应使用ConfigureAwait。对于ASP.NET应用程序,这包括使用HttpContext.Current或生成ASP.NET响应的任何代码,包括控制器操作中的返回语句。似乎您已经通过引用Stephen Cleary的文章回答了这个问题;)是的!:)我只需要确认一下这就是正在发生的事情。我看不到任何地方讨论过它,这篇文章是关于ASP.NET核心的,不是经典的。在使用ConfigureAwait(false)时,单个http请求可以并行占用多个线程,这对我来说似乎是一件大事,但在任何地方都没有讨论过。如前所述,
ConfigureAwait(false)
应该只在库中使用,在库中,您不关心在哪个线程/上下文上继续执行。在ASP.NET代码中,您不使用它,因此执行在一个上下文/线程中继续,您不需要担心并行性,但我们在ASP.NET项目中使用它,我知道很多项目也使用它。那么这里发生了什么?我从未读过任何警告不要在ASPNET中使用ConfigureAwait(false)的内容。由此可知:如果在需要上下文的方法中有等待之后的代码,则不应使用ConfigureAwait。对于ASP.NET应用程序,这包括使用HttpContext.Current或生成ASP.NET响应的任何代码,包括控制器操作中的返回语句。