Hi ForumI am trying to remove multiple fields from a feature class, with the following C# code.The list of fields to be removed is in backward order (highest index first), and I do not remove required fields.However, I can only remove 1 field each time I run this program. Second call to featureClass.DeleteField(IField field) throws an AccessViolationException.Am I missing some sort of 'update feature' between calls??Any suggestions will be appreciated. private static void deleteFields(IFeatureClass featureClass)
{
ISchemaLock schemaLock = featureClass as ISchemaLock;
try
{
schemaLock.ChangeSchemaLock(esriSchemaLock.esriExclusiveSchemaLock);
deleteField(featureClass, "ANGLE");
deleteField(featureClass, "SCALE");
deleteField(featureClass, "POLYGONID");
deleteField(featureClass, "GM_S_ARG");
deleteField(featureClass, "GM_I_ARG");
deleteField(featureClass, "GM_FEATURE");
deleteField(featureClass, "GM_CATEGORY");
deleteField(featureClass, "GM_VALID_ELEVATI");
deleteField(featureClass, "GM_SOURCE_T_SCAL");
deleteField(featureClass, "GEOPOINT_ID");
deleteField(featureClass, "GEOPOINT");
deleteField(featureClass, "PERIMETER");
deleteField(featureClass, "AREA");
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
finally
{
schemaLock.ChangeSchemaLock(esriSchemaLock.esriSharedSchemaLock);
}
}
private static void deleteField(IFeatureClass featureClass, String fieldName)
{
int index = featureClass.FindField(fieldName);
IFields fields = featureClass.Fields;
IField field = null;
if (index != -1)
{
field = fields.get_Field(index);
featureClass.DeleteField(field);<-----AccessViolationException (not at first call)
}
else
Console.WriteLine(fieldName + " not found");
}