获取GP工具状态进度

GP工具如果运行时间过长,会自动开辟新线程,将主线程还给程序,这样就难以获取其运行状态。

不过gp工具似乎没有内置能实时获取进度的参数。

可以通过开辟一个查询线程,实时获取其当前状态。


       private void PRV_GetStatus()
        {
            WATCH_StopWatch.Start(); //  开始监视代码运行时间
            while (GP_Progress.Status != ESRI.ArcGIS.esriSystem.esriJobStatus.esriJobSucceeded && GP_Progress.Status != ESRI.ArcGIS.esriSystem.esriJobStatus.esriJobFailed)
            {
                TS_TimeSpan = WATCH_StopWatch.Elapsed;
                S_Status = "状态:" + GP_Progress.Status.ToString() + "已经运行:" + ((int)(TS_TimeSpan.TotalSeconds)).ToString() + "秒";
                Thread.Sleep(1000);
                Console.WriteLine(S_Status);//控制台输出状态
            }
            WATCH_StopWatch.Stop();//停止计时器
            WATCH_StopWatch.Reset();//重置计时器
            TH_TimeSpan.Abort();//线程自杀
        }


使用的时候:

公共变量:

  IGeoProcessorResult GP_Progress;//GP状态
 TimeSpan TS_TimeSpan;//时间间隔
   Thread TH_TimeSpan;//线程

函数中使用:

     TH_TimeSpan = new Thread(PRV_GetStatus);//开辟线程计时
            TH_TimeSpan.Start();
            GP_Progress = GP_Tool.ExecuteAsync(Temp_FCToFC);
            TH_TimeSpan.Join();//阻塞主线程



你可能感兴趣的:(arcgis,ArcEngine,ArcgisEngine,ae)