Click here to view all files
 
Displays a progress dialog when a lengthy operation is taking place on the user interface thread.

Namespace:  ESRI.ArcGISExplorer.Application
Assembly:  ESRI.ArcGISExplorer.Application (in ESRI.ArcGISExplorer.Application.dll) Version: 2.0.0.900 (2.0.0.900)

Syntax

C#
public sealed class ProgressHelper : IDisposable
Visual Basic (Declaration)
Public NotInheritable Class ProgressHelper _
	Implements IDisposable

Remarks

The ProgressHelper class allows you to display a progress dialog to the user while the applications is working. The dialog is similar in style to the progress dialogs used by the application itself, helping to maintain a consistent look and feel in add-ins. Several update methods on the ProgressHelper class allow you to develop a progress dialog with informative progress information.

The ProgressHelper is designed for use by blocking operations on the user interface thread. For example the application shows a progress dialog while the view is switched from 2D to 3D mode, as the user is unable to interact with the application while the switch is taking place. It is not suitable for use from a worker thread.

Examples

The code below demonstrates how to use the ProgressHelper class to display an information dialog to users while a lengthy operation is being undertaken. In this example, the main instruction message tells the user which insect site is being currently processed and the secondary message reports which trees are currently being analyzed.
CopyC#
{
  //Get the tree Stands FeatureLayer
  FeatureLayer standsLayer = ESRI.ArcGISExplorer.Application.Application.ActiveMapDisplay.Map.FindByName("Stands") as FeatureLayer;
  //Get the tree Stands Table
  Table standsTable = standsLayer.Table;

  //Create a new ProgressHelper
  using (ProgressHelper progDialog = new ProgressHelper("Insect impact analysis", "Finding affected trees", "Results"))
  {
    //Show the ProgressHelper dialog
    progDialog.Show();

     //Assume all Point Notes relate to insect infestation sites
    foreach (Note insectSite in Application.ActiveMapDisplay.Map.GetMapItems<Note>())
    {
      if (insectSite.Graphic.Geometry is ESRI.ArcGISExplorer.Geometry.Point)
      {
        //update the main progress dialog message
        progDialog.UpdateInstruction(string.Format("Processing {0} site", insectSite));

        ESRI.ArcGISExplorer.Geometry.Point insectPnt = insectSite.Graphic.Geometry as ESRI.ArcGISExplorer.Geometry.Point;

        //Perform a search to find all affected tree stands within 1 mile of each location
        RowCollection affectedTreeStands = standsTable.SearchByDistance(insectPnt, 1, Unit.Miles);

        //Process each affected tree stand
        foreach (Row treeStand in affectedTreeStands)
        {   
          //update the secondary progress dialog message
          progDialog.UpdateMessage(string.Format("Analyzing {0} stand", treeStand.Values["SCPTDATA_ID"].ToString()));
          //Do some analysis or output results...
        }
      }
    } 
  }
}
CopyVB.NET
'Get the tree Stands FeatureLayer
Dim standsLayer As FeatureLayer = DirectCast(ESRI.ArcGISExplorer.Application.Application.ActiveMapDisplay.Map.FindByName("Stands"), FeatureLayer)
'Get the tree Stands Table
Dim standsTable As Table = standsLayer.Table

'Create a new ProgressHelper
Using progDialog As New ProgressHelper("Insect impact analysis", "Finding affected trees", "Results")

  'Show the ProgressHelper dialog
  progDialog.Show()

  'Assume all Point Notes relate to insect infestation sites
  For Each insectSite As Note In Application.ActiveMapDisplay.Map.GetMapItems(Of Note)()

    If TypeOf insectSite.Graphic.Geometry Is ESRI.ArcGISExplorer.Geometry.Point Then

      'update the main progress dialog message
      progDialog.UpdateInstruction(String.Format("Processing {0} site", insectSite))

      Dim insectPnt As ESRI.ArcGISExplorer.Geometry.Point = DirectCast(insectSite.Graphic.Geometry, ESRI.ArcGISExplorer.Geometry.Point)

      'Perform a search to find all affected tree stands within 1 mile of each location
      Dim affectedTreeStands As RowCollection = standsTable.SearchByDistance(insectPnt, 1, Unit.Miles)

      'Process each affected tree stand
      For Each treeStand As Row In affectedTreeStands
        'update the secondary progress dialog message
        progDialog.UpdateMessage(String.Format("Analyzing {0} stand", treeStand.Values.Item("SCPTDATA_ID").ToString()))
        'Do some analysis or output results...
      Next

    End If

  Next

End Using

Inheritance Hierarchy

System..::.Object
  ESRI.ArcGISExplorer.Application..::.ProgressHelper

See Also

Relate Topics:
  ProgressHelper Members
  ProgressHelper Constructor
  ProgressHelper Methods
Created by Atop CHM to web converter,© 2009 all right reserved.