Пример #1
0
        private async Task StartAsync()
        {
            InProcess = true;

            var found = PlayersFound;

            found.Clear();

            if (TotalPlayers == null)
            {
                TotalPlayers = (await _playerRepository.GetAllPlayersWithoutSteamAsync())
                               .Where(x => string.IsNullOrEmpty(x.GUID) == false)
                               .GroupBy(x => x.GUID)
                               .ToDictionary(x => x.Key, x => x.First().Id);
            }

            _cancelatioTokenSource?.Cancel();
            _cancelatioTokenSource = new CancellationTokenSource();

            if (_steamService.IsReady())
            {
                var res = await Task.Run(() => _steamService.GetSteamIds(TotalPlayers?.Keys.ToArray() ?? new string[0], _cancelatioTokenSource.Token));

                foreach (var item in res)
                {
                    PlayersFound.Add(Tuple.Create(item.Key, item.Value.ToString()));
                }

                await SaveAsync();
            }
            else
            {
                Task.Factory.StartNew(() => GenerateStart(_cancelatioTokenSource.Token),
                                      TaskCreationOptions.LongRunning);
            }
        }