About the Geoprocessing events listener Sample
[C#]
GPEventListner.cs
using System;
using System.Collections.Generic;
using System.Text;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.DataManagementTools;
using ESRI.ArcGIS.Geoprocessor;
using GeoprocessorEventHelper;
namespace TestListner
{
class GPEventListner
{
/// <summary>
/// This sample console app demonstrates listening to GP events as they happen
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Desktop);
GPMessageEventHandler gpEventHandler = new GPMessageEventHandler();
//get an instance of the geoprocessor
Geoprocessor GP = new Geoprocessor();
//register the event helper in order to be able to listen to GP events
GP.RegisterGeoProcessorEvents(gpEventHandler);
//wire the GP events
gpEventHandler.GPMessage += new MessageEventHandler(OnGPMessage);
gpEventHandler.GPPreToolExecute += new PreToolExecuteEventHandler(OnGPPreToolExecute);
gpEventHandler.GPToolboxChanged += new ToolboxChangedEventHandler(OnGPToolboxChanged);
gpEventHandler.GPPostToolExecute += new PostToolExecuteEventHandler(OnGPPostToolExecute);
//instruct the geoprocessing engine to overwrite existing datasets
GP.OverwriteOutput = true;
//create instance of the 'create random points' tool. Write the output to the machine's temp directory
CreateFeatureclass createFeatureClass = new CreateFeatureclass(System.IO.Path.GetTempPath(), "RandomPoints.shp");
//execute the tool
GP.Execute(createFeatureClass, null);
//unwire the GP events
gpEventHandler.GPMessage -= new MessageEventHandler(OnGPMessage);
gpEventHandler.GPPreToolExecute -= new PreToolExecuteEventHandler(OnGPPreToolExecute);
gpEventHandler.GPToolboxChanged -= new ToolboxChangedEventHandler(OnGPToolboxChanged);
gpEventHandler.GPPostToolExecute -= new PostToolExecuteEventHandler(OnGPPostToolExecute);
//unregister the event helper
GP.UnRegisterGeoProcessorEvents(gpEventHandler);
System.Diagnostics.Trace.WriteLine("Done");
}
static void OnGPPostToolExecute(object sender, GPPostToolExecuteEventArgs e)
{
System.Diagnostics.Trace.WriteLine(e.Result.ToString());
}
static void OnGPToolboxChanged(object sender, EventArgs e)
{
System.Diagnostics.Trace.WriteLine("OnGPToolboxChanged");
}
static void OnGPPreToolExecute(object sender, GPPreToolExecuteEventArgs e)
{
System.Diagnostics.Trace.WriteLine(e.Description);
}
static void OnGPMessage(object sender, GPMessageEventArgs e)
{
System.Diagnostics.Trace.WriteLine(e.Message);
}
}
}
[Visual Basic .NET]
GPEventListner.vb
Imports Microsoft.VisualBasic
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports ESRI.ArcGIS.esriSystem
Imports ESRI.ArcGIS.DataManagementTools
Imports ESRI.ArcGIS.Geoprocessing
Imports GeoprocessorEventHelper
Namespace TestListner
Friend Class GPEventListner
' This sample console app demonstrates listening to GP events as they happen
Shared Sub Main(ByVal args As String())
ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Desktop)
Dim gpEventHandler As GPMessageEventHandler = New GPMessageEventHandler()
'get an instance of the geoprocessor
Dim GP As IGeoProcessor2 = New ESRI.ArcGIS.Geoprocessing.GeoProcessor()
'Dim GP As ESRI.ArcGIS.Geoprocessor.Geoprocessor = New ESRI.ArcGIS.Geoprocessor.Geoprocessor()
'register the event helper in order to be able to listen to GP events
GP.RegisterGeoProcessorEvents(gpEventHandler)
'wire the GP events
AddHandler gpEventHandler.GPMessage, AddressOf OnGPMessage
AddHandler gpEventHandler.GPPreToolExecute, AddressOf OnGPPreToolExecute
AddHandler gpEventHandler.GPToolboxChanged, AddressOf OnGPToolboxChanged
AddHandler gpEventHandler.GPPostToolExecute, AddressOf OnGPPostToolExecute
'instruct the geoprocessing engine to overwrite existing datasets
GP.OverwriteOutput = True
Dim parameters As IVariantArray = New VarArray()
parameters.Add(System.IO.Path.GetTempPath())
parameters.Add("NewShapefile.shp")
''create instance of the 'create random points' tool. Write the output to the machine's temp directory
'Dim createFeatureclassTool As CreateFeatureclass = New CreateFeatureclass(System.IO.Path.GetTempPath(), "RandomPoints.shp")
'execute the tool
'GP.Execute(createFeatureclassTool, Nothing)
GP.Execute("CreateFeatureclass_management", parameters, Nothing)
'unwire the GP events
RemoveHandler gpEventHandler.GPMessage, AddressOf OnGPMessage
RemoveHandler gpEventHandler.GPPreToolExecute, AddressOf OnGPPreToolExecute
RemoveHandler gpEventHandler.GPToolboxChanged, AddressOf OnGPToolboxChanged
RemoveHandler gpEventHandler.GPPostToolExecute, AddressOf OnGPPostToolExecute
'unregister the event helper
GP.UnRegisterGeoProcessorEvents(gpEventHandler)
System.Diagnostics.Trace.WriteLine("Done")
End Sub
Private Shared Sub OnGPPostToolExecute(ByVal sender As Object, ByVal e As GPPostToolExecuteEventArgs)
System.Diagnostics.Trace.WriteLine(e.Result.ToString())
End Sub
Private Shared Sub OnGPToolboxChanged(ByVal sender As Object, ByVal e As EventArgs)
System.Diagnostics.Trace.WriteLine("OnGPToolboxChanged")
End Sub
Private Shared Sub OnGPPreToolExecute(ByVal sender As Object, ByVal e As GPPreToolExecuteEventArgs)
System.Diagnostics.Trace.WriteLine(e.Description)
End Sub
Private Shared Sub OnGPMessage(ByVal sender As Object, ByVal e As GPMessageEventArgs)
System.Diagnostics.Trace.WriteLine(e.Message)
End Sub
End Class
End Namespace