ArcGISEngine中GP工具奇怪錯誤問題
阿新 • • 發佈:2018-12-15
執行時環境:使用CADToGeodatabase工具執行DWG檔案轉gdb過程,多次執行(即執行完一個dwg轉gdb,再執行另一個dwg轉gdb),執行失敗
錯誤描述:首先執行CADToGeodatabase工具需要先生成gdb工作空間,這個很簡單沒什麼問題
IWorkspaceFactory2 pTargetWsf = new FileGDBWorkspaceFactoryClass(); IWorkspaceName pWorkspaceName = pTargetWsf.Create(sPath, sName, null, 0); IWorkspace gdbWks = pTargetWsf.Open(pWorkspaceName.ConnectionProperties, 0);
然後執行CADToGeodatabase gp工具。
public static bool CADToGeodatabase(string cadPath,string gdbPath,ref string msg) { Geoprocessor gp = new Geoprocessor(); object sev = null; try { CADToGeodatabase tool = new CADToGeodatabase(); tool.input_cad_datasets= cadPath; tool.out_dataset_name = "CADDATASET"; tool.out_gdb_path = gdbPath; tool.reference_scale = 1000; gp.Execute(tool, null); return true; } catch (Exception ex) { msg= gp.GetMessages(ref sev); return false; } }
問題來了,在gp.Execute(tool, null)處,第二次執行會丟擲異常,通過檢視msg。很奇怪的問題,檢視官方文件沒找到解決方案
ERROR 000278: 2072 error(s) have been detected for layer 20181015142904. Errors are described in file GLC:\Users\使用者\AppData\Local\Temp\GL201810151429040.log.log in your temp directory. ERROR 000016: 2072 annotation(s) rejected Failed to execute (CADToGeodatabase).
在temp資料夾下確實發現了log日誌。裡面記錄的也看不懂。
後來發現官方例項用到gp工具的地方都是在類例項中使用,沒在靜態方法中使用。於是測試把gp工具不用靜態呼叫,結果好了,而且每次在temp下都不會有日誌存在。
淺嘗輒止:以後用gp工具最好不要放在靜態呼叫