public override async Task Start() { var lastRecord = await GetLastRecord(); if (!string.IsNullOrEmpty(lastRecord?.Ids)) { _lastImageIds = lastRecord.Ids.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries) .Select(int.Parse).ToList(); } _currentImageIds.Clear(); if (!Queues.Any()) { var queues = ServiceProvider.GetRequiredService <IEnumerable <ITaskQueue> >() .Where(t => t.Id.Contains("Yande")); queues.ForEach(AddQueue); } await base.Start(); await Distribute(new YandeListTaskData { Page = 1, LastImageIds = _lastImageIds }); while (Active) { await Task.Delay(1000); } if (Status == TaskQueueStatus.Running) { await base.Stop(); if (_currentImageIds.Any()) { var record = new YandeCollectRecord { CollectDt = DateTime.Now, Ids = string.Join(",", _currentImageIds), Site = Options.Value.Site }; await SaveCollectRecord(record); } } }
public abstract Task SaveCollectRecord(YandeCollectRecord record);