ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Desktop.Framework.Threading.Tasks Namespace / CancelableProgressor Class
Members Example Version

CancelableProgressor Class
Indicates the progress of an operation that is cancelable.
Object Model
CancelableProgressor ClassCancelableProgressor Class
Syntax
public class CancelableProgressor : Progressor 
Example
Progressor - Cancelable
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);
}
Inheritance Hierarchy

System.Object
   ArcGIS.Desktop.Framework.Threading.Tasks.Progressor
      ArcGIS.Desktop.Framework.Threading.Tasks.CancelableProgressor

Requirements

Target Platforms: Windows 11, Windows 10

ArcGIS Pro version: 3 or higher.
See Also