C# 配置线程池线程是否需要等待(false)?
假设我不关心同步上下文,当我已经在C# 配置线程池线程是否需要等待(false)?,c#,.net,multithreading,asynchronous,async-await,C#,.net,Multithreading,Asynchronous,Async Await,假设我不关心同步上下文,当我已经在线程池中时,等待调用是否需要.ConfigureAwait(false)?例如,我通过以下方式启动异步操作: wait Task.Run(()=>myService.DoSomething()) 我知道,如果您不关心上下文,并且您在UI线程或ASP.NET请求中,只是想知道它是否为这些情况之外的异步操作提供了相同的好处,那么使用它是很重要的。如果存在当前同步上下文(即使运行代码的线程是线程池线程),则将使用它。如果不希望使用该同步上下文,则需要使用Configu
线程池中时,等待调用是否需要.ConfigureAwait(false)
?例如,我通过以下方式启动异步操作:
wait Task.Run(()=>myService.DoSomething())代码>
我知道,如果您不关心上下文,并且您在UI线程或ASP.NET请求中,只是想知道它是否为这些情况之外的异步操作提供了相同的好处,那么使用它是很重要的。如果存在当前同步上下文(即使运行代码的线程是线程池线程),则将使用它。如果不希望使用该同步上下文,则需要使用ConfigureAwait(false)
。如果没有当前同步上下文,则ConfigureAwait(false)
不会执行任何操作,因为没有要捕获的同步上下文,而您是否拥有它也无关紧要。如果希望捕获同步上下文(无论当前线程是否为线程池线程),则不希望调用configurewait
简言之,您是否作为线程池线程运行与您是否应该捕获同步上下文的决定无关