Wait
ManualResetEventSlim.Wait
Timeout values were taken as best-guesses of upper values we'd expect from sane execution.
Just noticed in passing. Probably best we do this since it was known to fail on windows in some rare cases.
In line with framework changes in https://github.com/ppy/osu-framework/pull/4793.
It is dangerous to use this as it doesn't correctly handle contexts and can cause issues that will never actually arise in normal execution. # Conflicts: # osu.Game/Database/SingletonContextFactory.cs
It looks like transactions are used internally during migration.
Also add finaliser logic for safety. Also better threading. Also more cleanup.
Relies on https://github.com/ppy/osu-framework/pull/1100 being merged for most effectiveness.
Bonus stage