Select to view content in your preferred language

How to get error messages

608
1
01-21-2024 06:36 PM
YetaoYang
Emerging Contributor

I am using arcgis pro sdk. After I called the tool, the tool failed to run, but the prompt box was blank. How can I get detailed information?

YetaoYang_0-1705890956912.png

 

// 获取错误信息
if (results.IsFailed)
{
    await QueuedTask.Run(() =>
    {
        Geoprocessing.ShowMessageBox(results.Messages, "工具执行失败", GPMessageBoxStyle.Error);
    });
}
1 Reply
GKmieliauskas
Esri Regular Contributor

Hi,

It could show that your tool was not started for not valid parameters or invalid tool path/name. Try to use GPTool Execute Event Handler to get more information about tool execution.

System.Threading.CancellationTokenSource _cts;

string ozone_points = @"C:\data\ca_ozone.gdb\O3_Sep06_3pm";

string[] args = { ozone_points, "OZONE", "", "in_memory\\raster", "300",
                    "EMPIRICAL", "300", "5", "5000",
                    "NBRTYPE=StandardCircular RADIUS=310833.272442914 ANGLE=0 NBR_MAX=10 SECTOR_TYPE=ONE_SECTOR",
                    "PREDICTION", "0.5", "EXCEED", "", "K_BESSEL" };

string tool_path = "ga.EmpiricalBayesianKriging";

_cts = new System.Threading.CancellationTokenSource();

var result = await Geoprocessing.ExecuteToolAsync(tool_path, args, null, _cts.Token,
    (event_name, o) =>  // implement delegate and handle events
    {
        switch (event_name)
        {
            case "OnValidate": // stop execute if any warnings
                if ((o as IGPMessage[]).Any(it => it.Type == GPMessageType.Warning))
                break;

            case "OnProgressMessage":
                string msg = string.Format("{0}: {1}", new object[] { event_name, (string)o });
                System.Windows.MessageBox.Show(msg);
                break;

            case "OnProgressPos":
                string msg2 = string.Format("{0}: {1} %", new object[] { event_name, (int)o });
                System.Windows.MessageBox.Show(msg2);
                break;
        }
    });

var ret = result;
_cts = null;
0 Kudos