protected void Load() { var start = Stopwatch.StartNew(); lock (_loadLock) { foreach (var item in WrappersList.Where(x => !x.IsLoaded)) { item.Value = CreateAndLoadAcObject(item.Value.Id, item.Value.Enabled); } IsLoaded = true; ListReady(); if (GetType() != typeof(CarSkinsManager)) { Logging.Write($"[{GetType().Name}] Loading finished: {WrappersList.Count} objects, {start.ElapsedMilliseconds} ms"); } } }
protected override async Task LoadAsync() { LoadingReset = false; await WrappersList.Where(x => !x.IsLoaded).Select(async x => { var loaded = await Task.Run(() => CreateAndLoadAcObject(x.Value.Id, x.Value.Enabled, false)); if (x.IsLoaded) { return; } Created?.Invoke(this, new AcObjectEventArgs <TrackSkinObject>(loaded)); x.Value = loaded; loaded.PastLoad(); }).WhenAll(SettingsHolder.Content.LoadingConcurrency); IsLoaded = true; ListReady(); if (LoadingReset) { Load(); } }