Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.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# async/await方法是否与调用方在同一线程中运行?_C#_Async Await - Fatal编程技术网

C# async/await方法是否与调用方在同一线程中运行?

C# async/await方法是否与调用方在同一线程中运行?,c#,async-await,C#,Async Await,我已经读到async/await方法与调用者在同一个线程中运行,我在WPF应用程序中看到了它,但在控制台应用程序中测试代码时,我看到它在与调用者不同的线程中运行。 我错过什么了吗? 我错过什么了吗 有点等待对线程一无所知。它会导致await关键字(默认情况下)后面的代码在与调用方相同的SynchronizationContext中运行(如果存在) 对于WPF应用程序,当前的SynchronizationContext被设置为将调用封送回UI线程,这意味着它将在UI线程上结束。(在Windows

我已经读到async/await方法与调用者在同一个线程中运行,我在WPF应用程序中看到了它,但在控制台应用程序中测试代码时,我看到它在与调用者不同的线程中运行。 我错过什么了吗?

我错过什么了吗

有点<代码>等待对线程一无所知。它会导致
await
关键字(默认情况下)后面的代码在与调用方相同的
SynchronizationContext
中运行(如果存在)

对于WPF应用程序,当前的
SynchronizationContext
被设置为将调用封送回UI线程,这意味着它将在UI线程上结束。(在Windows窗体中也是如此)。在控制台应用程序中,没有同步上下文,因此它无法发回该上下文,这意味着您将在线程池线程上结束

如果要将自定义的
SynchronizationContext
安装到
SynchronizationContext.Current
中,则调用将在那里发布。但是,这在控制台应用程序中并不常见,因为它通常需要“消息循环”之类的东西才能正常工作。

没有线程: