【发布时间】:2018-08-11 22:01:04
【问题描述】:
我遇到了 c# 7.1 的异步主要功能的问题。
这里是一个演示问题的示例项目的 github 链接:https://github.com/xorpherion/CSharpAsyncMainProblem
代码用作游戏循环的一部分。如您所见,主要签名使用异步,因此在幕后创建了同步上下文。
Timedloop 类是一种在当前时间超过限制时尝试安排事件 (OnTick) 的计时器。触发事件的方法有 3 种:SpinLoop、WaitLoopAsync 和 WaitLoop。 SpinLoop 和 WaitLoop 的行为符合预期(OnTick 的单线程调度)。问题在于 WaitLoopAsync。我在这里期望的是也留在当前线程上,因为 .ConfigureAwait 未设置为“false”。但是当您运行代码时,您会在控制台上看到线程 ID 更改的消息。其他循环“类型”不会发生这种情况。
我的问题是:为什么没有在同一个线程上安排延续?
我在 .net core 2.1 上运行它。
【问题讨论】:
标签: c# async-await