我遇到了c#7.1的异步主要功能问题.
这是一个示例项目的github链接,用于演示此问题:https://github.com/xorpherion/CSharpAsyncMainProblem
该代码用作游戏循环的一部分.正如您所看到的,主要签名使用异步,因此在幕后创建了同步上下文.
Timedloop类是一种计时器,它尝试在当前时间超过限制时安排事件(OnTick).有3种方法可以触发事件:SpinLoop,WaitLoopAsync和WaitLoop.SpinLoop和WaitLoop按预期运行(OnTick的单线程调度).问题出在WaitLoopAsync上.我在这里期待的是也保持当前线程为.ConfigureAwait未设置为"false".但是当您运行代码时,您将在控制台上看到线程ID更改的消息.其他循环"类型"不会发生这种情况.
我的问题是:为什么延续没有安排在同一个线程上?
我在.net核心2.1上运行它.