Set current SynchronizationContext before the game loop starts
This Fixes the problem that SynchronizationContext.Current
would be null during the call to _EnterTree
, _Ready
and the first call to _Process
thus the task continuations would be scheduled outside the main thread, which is unexpected and might lead to crashes.
With this change, task continuations are scheduled always on the main thread and so async/await can be used without any explicit synchronization, which is what is expected.
Fixes #18849 (closed)