private void progress_ProgressChanged(object sender, ProgressReport e) { CurrentProgressReport = e; }
private async Task DoProcessingTask(CancellationToken cancellationToken, IProgress <ProgressReport> progress = null) { int numRandoms = 100000; var generator = new Random(); _randomNumList = new List <int>(); for (int i = 0; i < numRandoms; i++) { int randomNum = generator.Next(); _randomNumList.Add(randomNum); } int numSorts = 1000; double percentComplete = 0; await Task.Run(() => { for (int i = 0; i < numSorts; i++) { //TODO: this isn't working yet!!! cancellationToken.ThrowIfCancellationRequested(); var copiedList = new List <int>(_randomNumList); copiedList.Sort(); percentComplete = i / (double)numSorts * 100; string progressString; if (percentComplete < 15) { progressString = "Starting..."; } else if (percentComplete >= 15 && percentComplete <= 75) { progressString = "Sorting..."; } else if (percentComplete > 75) { progressString = "Almost done."; } else if (Math.Abs(percentComplete - 100) < 1) { progressString = "COMPLETE!!! "; } else { progressString = ""; } if (progress != null) { progress.Report(new ProgressReport { ProgressString = progressString, ProgressValue = percentComplete }); } } }, cancellationToken); CurrentProgressReport = new ProgressReport { ProgressValue = 100, ProgressString = "COMPLETE!!!" }; }