AccessViolationException [ArcEngine]

В настоящее время я занимаюсь разработкой с использованием ArcObects 10.2.1, и я столкнулся с этим хитрым исключением:

AccessViolationException обнаружен

Попытка чтения или записи защищенной памяти. Это часто указывает на то, что другая память повреждена.

Источник =System.Windows.Forms

Трассировки стека:

   System.Windows.Forms.UnsafeNativeMethods.CallWindowProc(IntPtr wndProc, IntPtr hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   System.Windows.Forms.NativeWindow.DefWndProc(Message& m)
   System.Windows.Forms.Control.DefWndProc(Message& m)
   System.Windows.Forms.Control.WndProc(Message& m)
   System.Windows.Forms.AxHost.WndProc(Message& m)
   System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

InnerException:

Я попытался аннотировать код и выяснить, где он был неправильным. Я нашел его в последней строке. Но я до сих пор не знаю, как его решить.

    public void SetSimpleLabel(IFeatureLayer featLayer, string field, string where = "")
    {
        IGeoFeatureLayer geoFeatureLayer = featLayer as IGeoFeatureLayer;
        IAnnotateLayerPropertiesCollection annoProperties = geoFeatureLayer.AnnotationProperties;
        annoProperties.Clear();

        ILineLabelPosition position = new LineLabelPosition();
        position.Parallel = true;
        position.Perpendicular = false;

        ILineLabelPlacementPriorities placement = new LineLabelPlacementPriorities();
        IBasicOverposterLayerProperties basic = new BasicOverposterLayerProperties();
        basic.FeatureType = esriBasicOverposterFeatureType.esriOverposterPoint;
        basic.LineLabelPlacementPriorities = placement;
        basic.LineLabelPosition = position;

        ILabelEngineLayerProperties labelProperties = new LabelEngineLayerProperties() as ILabelEngineLayerProperties;
        labelProperties.Symbol = sf.CreateTextSymbol(null, 12, null, null, esriTextHorizontalAlignment.esriTHACenter);
        labelProperties.BasicOverposterLayerProperties = basic;
        labelProperties.Expression = "[" + field + "]";
        IAnnotateLayerProperties annoLayerProperties = labelProperties as IAnnotateLayerProperties;
        if (where != "")
            annoLayerProperties.WhereClause = where;
        annoProperties.Add(annoLayerProperties);

        geoFeatureLayer.DisplayAnnotation = true; //it cause
    }

почему это вызывает исключение? у кого-нибудь есть идеи?

0 ответов

Другие вопросы по тегам