AnsweredAssumed Answered

Problem with GeoProcessor.GetDataElement (C#)

Question asked by belowzero8 on Apr 11, 2013
Latest reply on Feb 21, 2018 by jsn
I am writing an application that needs to run through a GDB with one dataset and multiple feature classes.  The feature classes have subtypes and coded domain values.  I need to get the count by subtype.  Every time I run this code in my application it crashes when it gets to "IDataElement dataElem = (IDataElement)gp2.GetDataElement(fcPath, ref dType);".  It does not throw an exception it just terminates the application completely.

The odd thing is that if I extract this code from the application it will run by itself.  Anyone have any ideas at all?  I'm desperate and I need to figure this out.

            GeoProcessor gp = new GeoProcessor();             IWorkspaceFactory wsFact = new FileGDBWorkspaceFactoryClass();             IWorkspace ws = wsFact.OpenFromFile(destData, 0);             IEnumDataset enumDS = ws.get_Datasets(esriDatasetType.esriDTFeatureDataset);             IFeatureDataset ltdsDS = (IFeatureDataset)enumDS.Next();             IEnumDataset enumFC = ltdsDS.Subsets;             IDataset currFC = enumFC.Next();              fCodeCounts = new Dictionary<string, Dictionary<int, int>>();             while (currFC != null)             {                 FeatureClass fc = (FeatureClass)currFC;                 IFeatureClass fcl = (IFeatureClass)fc;                 System.Object dType = "";                 string fcPath = destData + "\\" + ltdsDS.BrowseName + "\\" + fc.BrowseName;                 IDataElement dataElem = (IDataElement)gp.GetDataElement(fcPath, ref dType);                 IDEGdbTable deTbl = (IDEGdbTable)dataElem;                 IArray arr = deTbl.Subtypes;                 Dictionary<int, int> tempDict = new Dictionary<int, int>();                 fCodeCounts.Add(fc.BrowseName, new Dictionary<int,int>());                 for (int i = 0; i < (arr.Count); i++)                 {                     IGPSubtype gpSt = (IGPSubtype)arr.get_Element(i);                     tempDict.Add(gpSt.SubtypeCode, fcl.FeatureCount(CreateSubtypeQuery(gpSt.SubtypeCode)));                 }                 fCodeCounts.Add(fc.BrowseName, tempDict);                 currFC = enumFC.Next();             }

Outcomes