public async Task RunAsync(CancellationToken cancellationToken) { Status = JobStatus.Downloading; OnJobStarted?.Invoke(this, new JobStartedEventArgs(SongHash, SongKey, SongName, LevelAuthorName)); int downloadTime = NumberGenerator.Next(MinDownloadTime, MaxDownloadTime); int extractTime = NumberGenerator.Next(MinZipTime, MaxZipTime); if (UseDelays) { await Task.Delay(downloadTime); } if (Paused) { Console.WriteLine("We're 'Paused'"); } Result.DownloadResult = _finalResult.DownloadResult; if ((Result.DownloadResult?.Status ?? DownloadResultStatus.Unknown) == DownloadResultStatus.Success) { Status = JobStatus.Extracting; if (UseDelays) { await Task.Delay(extractTime); } Result.ZipResult = _finalResult.ZipResult; SongDirectory = _finalResult.SongDirectory; Status = JobStatus.Finished; } Status = JobStatus.Finished; OnJobFinished?.Invoke(this, new JobFinishedEventArgs(SongHash, Result.Successful, Result.DownloadResult.Status, Result.ZipResult.ResultStatus, SongDirectory)); }
public void Update() { switch (_state) { case JobState.InProgress: ProgressUpdate(); break; var finishedAgents = new List <Agent>(); case JobState.Designation: DesignationUpdate(); break; case JobState.Finished: OnJobFinished?.Invoke(this); break; } }
private void TimerOnElapsed(object sender, ElapsedEventArgs elapsedEventArgs) { _timer.Stop(); if (_isRunning) { // Run task OnJobStarted?.Invoke(); RunInternal(); OnJobFinished?.Invoke(); } if (_isRunning) { // Restart timer _timer.Interval = ExecutionInterval.TotalMilliseconds; _timer.Start(); } }