public async void Tick(object state, ElapsedEventArgs args) { await Task.Run(async() => { try { var currentGlobalPlayerRanking = await PlayerDb.GetGlobalPlayerRankingAsync(); for (var i = 0; i < currentGlobalPlayerRanking.Count; i++) { GlobalPlayerRanking.UpdateOrInsert(i, currentGlobalPlayerRanking[i]); } foreach (var(key, value) in LocalPlayerRanking) { var currentLocalPlayerRanking = await PlayerDb.GetLocalPlayerRankingAsync(key); for (var i = 0; i < currentLocalPlayerRanking.Count; i++) { value.UpdateOrInsert(i, currentLocalPlayerRanking[i]); } } } catch (Exception exception) { Logger.Log($"Error while updating leaderboads {exception}", GetType(), ErrorLevel.Error); } }); }