diff --git a/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerPlayer.cs b/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerPlayer.cs index b49f373c7b..78e7f3d987 100644 --- a/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerPlayer.cs +++ b/osu.Game/Screens/OnlinePlay/Multiplayer/MultiplayerPlayer.cs @@ -175,10 +175,12 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer base.StartGameplay(); }); - private void onResultsReady() => Scheduler.Add(() => + private void onResultsReady() { - resultsReady.SetResult(true); - }); + // Schedule is required to ensure that `TaskCompletionSource.SetResult` is not called more than once. + // A scenario where this can occur is if this instance is not immediately disposed (ie. async disposal queue). + Schedule(() => resultsReady.SetResult(true)); + } protected override async Task PrepareScoreForResultsAsync(Score score) {