ArcGIS Pro的进度条

protected override async void OnClick()
{
    using (var progress = new ProgressDialog("Showing Progress", "Canceled", 100, false))
    {
        var status = new CancelableProgressorSource(progress);
        status.Max = 100;
        progress.Show();

        await QueuedTask.Run(async () =>
        {
            uint step = 0;
            for (var idx = 0; idx < 10; idx++)
            {
                await Task.Delay(1000);
                status.Progressor.Value += 10;
                status.Progressor.Status = (status.Progressor.Value * 100 / status.Progressor.Max) + @" % Completed";
                status.Progressor.Message = "Message " + status.Progressor.Value;
            }
        }, status.Progressor);

        progress.Hide();
    }
}
==================================
 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);
        }

 

 

你可能感兴趣的:(ArcGIS Pro的进度条)