public override void OpenRecord(BaseTask task) { task.RecordIndex = RecordList.Count; CollectRecord prevRecord = (RecordList.Count == 0) ? null : RecordList[RecordList.Count - 1] as CollectRecord; RecordList.Add(new CollectRecord(prevRecord, task as CollectTask)); }
public static string RecordHeader = "Index,TaskIndex,StartTimeStamp,EndTimeStamp"; // ,PrevDistance,TravelDistance // public float prevDistance; // distance to previous target // public Vector3 targetPosition; public CollectRecord(CollectRecord preRecord, CollectTask task) { taskIndex = task.TaskIndex; recordIndex = (preRecord == null)? 0: preRecord.recordIndex + 1; // targetPosition = task.gameObject.transform.position; // prevDistance = (recordIndex == 0) ? 0.0f : (targetPosition - preRecord.targetPosition).magnitude; }
public override async Task Start() { if (Status == TaskQueuePoolStatus.Idle) { var db = new YandeDbContext(new DbContextOptionsBuilder <YandeDbContext>() .UseMySql(_options.DbConnectionString).Options); var lastRecord = await db.CollectRecords.OrderByDescending(t => t.CollectDt) .FirstOrDefaultAsync(t => t.Site == _options.Site); if (!string.IsNullOrEmpty(lastRecord?.Ids)) { _lastImageIds = lastRecord.Ids.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries) .Select(int.Parse).ToList(); } _currentImageIds.Clear(); if (!this.Any()) { Add(new YandeGetImageUrlListTaskQueue(new YandeGetImageUrlListTaskQueueOptions { MaxThreads = _options.ListThreads, Interval = _options.ListInterval, ListUrlTpl = _options.ListUrlTemplate, CurrentTaskImageIds = _currentImageIds, LastTaskImageIds = _lastImageIds, Purpose = ProxyPurpose }, LoggerFactory)); Add(new DownloadImageTaskQueue(new DownloadImageTaskQueueOptions { MaxThreads = _options.DownloadThreads, Interval = _options.DownloadInterval, DownloadPath = _options.DownloadPath, Purpose = ProxyPurpose }, LoggerFactory)); } Enqueue(new YandeGetImageUrlListTaskData { Page = 1 }); await base.Start(); if (this.All(t => t.Completed) && _currentImageIds.Any()) { var record = new CollectRecord { CollectDt = DateTime.Now, Ids = string.Join(",", _currentImageIds), Site = _options.Site }; db.Add(record); await db.SaveChangesAsync(); } } }