public async Task Progressor_Cancelable() { ArcGIS.Desktop.Framework.Threading.Tasks.CancelableProgressorSource cps = new ArcGIS.Desktop.Framework.Threading.Tasks.CancelableProgressorSource("Doing my thing - cancelable", "Canceled"); int numSecondsDelay = 5; //If you run this in the DEBUGGER you will NOT see the dialog //simulate doing some work which can be canceled await ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() => { cps.Progressor.Max = (uint)numSecondsDelay; //check every second while (!cps.Progressor.CancellationToken.IsCancellationRequested) { cps.Progressor.Value += 1; cps.Progressor.Status = "Status " + cps.Progressor.Value; cps.Progressor.Message = "Message " + cps.Progressor.Value; if (System.Diagnostics.Debugger.IsAttached) { System.Diagnostics.Debug.WriteLine(string.Format("RunCancelableProgress Loop{0}", cps.Progressor.Value)); } //are we done? if (cps.Progressor.Value == cps.Progressor.Max) break; //block the CIM for a second Task.Delay(1000).Wait(); } System.Diagnostics.Debug.WriteLine(string.Format("RunCancelableProgress: Canceled {0}", cps.Progressor.CancellationToken.IsCancellationRequested)); }, cps.Progressor); }
Target Platforms: Windows 11, Windows 10, Windows 8.1