The code below with 3 parameters fails to run slope tool and get expected result <!-- language: lang-c# --> public SlopeTool(string inRaster, string outRasterName, string workspace, string prjFilePath) { _inRaster = inRaster; _outRasterName = outRasterName; _workspace = workspace; _prjFilePath = prjFilePath; } public async Task<IGpResult> ExecuteAsync() { try { var slopeToolParameters = Geoprocessing.MakeValueArray( _inRaster, "PERCENT_RISE", 1 ); var gpResult = await Geoprocessing.ExecuteToolAsync("sa.Slope", slopeToolParameters); if (gpResult.IsFailed) { MessageBox.Show("Tool Failed"); } return new GpResult(gpResult); } catch (Exception ex) { MessageBox.Show($@"Error during Slope Tool operation: {ex.Message}"); return new GpResult(null); } } But this code below runs and succeeds with the single parameter <!-- language: lang-c# --> public SlopeTool(string inRaster, string outRasterName, string workspace, string prjFilePath) { _inRaster = inRaster; _outRasterName = outRasterName; _workspace = workspace; _prjFilePath = prjFilePath; } public async Task<IGpResult> ExecuteAsync() { try { var slopeToolParameters = Geoprocessing.MakeValueArray( _inRaster ); var gpResult = await Geoprocessing.ExecuteToolAsync("sa.Slope", slopeToolParameters); if (gpResult.IsFailed) { MessageBox.Show("Tool Failed"); } return new GpResult(gpResult); } catch (Exception ex) { MessageBox.Show($@"Error during Slope Tool operation: {ex.Message}"); return new GpResult(null); } } I can also run it in Arcgis pro python command line this way arcpy.sa.Slope('DEM_AB_Clip1.tif', 'PERCENT_RISE', 1) What is the problem in my 1st code with 3 parameters and how to get expected result ?