diff --git a/osu.Game/Database/OnlineLookupCache.cs b/osu.Game/Database/OnlineLookupCache.cs index 8a50cc486f..5eb9fa24fa 100644 --- a/osu.Game/Database/OnlineLookupCache.cs +++ b/osu.Game/Database/OnlineLookupCache.cs @@ -116,7 +116,10 @@ private void performLookup() } if (nextTaskBatch.Count == 0) + { + finishPendingTask(); return; + } // Query the values. var request = CreateRequest(nextTaskBatch.Keys.ToArray()); @@ -125,13 +128,7 @@ private void performLookup() // todo: we probably want retry logic here. api.Perform(request); - // Create a new request task if there's still more values to query. - lock (taskAssignmentLock) - { - pendingRequestTask = null; - if (pendingTasks.Count > 0) - createNewTask(); - } + finishPendingTask(); var foundValues = RetrieveResults(request); @@ -157,6 +154,17 @@ private void performLookup() } } + private void finishPendingTask() + { + // Create a new request task if there's still more values to query. + lock (taskAssignmentLock) + { + pendingRequestTask = null; + if (pendingTasks.Count > 0) + createNewTask(); + } + } + private void createNewTask() => pendingRequestTask = Task.Run(performLookup); } }