获取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();//阻塞主线程



  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是一个简单的WebGIS调用GP工具的代码,使用JavaScript和ArcGIS API for JavaScript实现: ```javascript require([ "esri/tasks/Geoprocessor", "esri/tasks/FeatureSet", "esri/geometry/Point", "esri/symbols/SimpleMarkerSymbol", "esri/Color", "dojo/domReady!" ], function(Geoprocessor, FeatureSet, Point, SimpleMarkerSymbol, Color) { // 创建GP工具对象 var gp = new Geoprocessor("http://myserver/arcgis/rest/services/MyGPTool/GPServer/MyGPTool"); // 创建一个点几何对象 var point = new Point(-118.15, 33.80); // 创建一个简单符号 var symbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 10, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([255,0,0]), 1), new Color([0,0,0,0.25])); // 在地图上显示点 var graphic = new Graphic(point, symbol); map.graphics.add(graphic); // 创建GP工具所需的输入参数 var inputParams = { "Input_Point": point }; // 创建FeatureSet对象作为GP工具的输入 var featureSet = new FeatureSet(); featureSet.features = [graphic]; // 设置GP工具的参数 gp.setOutSpatialReference(new SpatialReference(4326)); gp.setOutputSpatialReference(new SpatialReference(4326)); gp.setProcessSpatialReference(new SpatialReference(4326)); gp.setUpdateDelay(500); gp.setParameter("Input_Point", featureSet); // 执行GP工具 gp.submitJob(inputParams, function(jobInfo) { // GP工具执行成功后的回调函数 gp.getResultData(jobInfo.jobId, "Output_Feature_Class", function(output) { // 处理GP工具输出结果 var featureLayer = new FeatureLayer(output.value.url, { id: "MyGPResultLayer" }); map.addLayer(featureLayer); }); }, function(error) { // GP工具执行失败后的回调函数 console.log(error); }); }); ``` 这个代码中,我们使用了ArcGIS API for JavaScript提供的`Geoprocessor`类来创建一个GP工具对象,然后设置GP工具的输入参数和执行参数,并调用`submitJob`方法来执行GP工具。在GP工具执行成功后的回调函数中,我们可以使用`getResultData`方法获取GP工具的输出结果,并将其显示在地图上。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值