Ich hänge ein Arcobjects-Kartenereignis an ein vb.net-Formular, um auf Kartenauswahländerungen zu warten. Alles funktioniert gut, aber Benutzer melden diesen Fehler gelegentlich beim Öffnen des Formulars. Ich kann kein Muster sehen, um den Fehler zu reproduzieren und es scheint zufällig zu sein."COM-Objekt, das von seinem zugrunde liegenden RCW getrennt wurde, kann nicht verwendet werden" Fehler im Zusammenhang mit vb.net Formularereignis
Es stammt aus der Form Load() Methode „COM-Objekt, das vom zugrunde liegenden RCW getrennt wurde, kann nicht verwendet werden“, wo ich die Veranstaltung am Einhaken.
Kann mir jemand helfen zu verstehen, was ich falsch gemacht habe? Ich hole das Map-Auswahlereignis im FormClosing() Event ab, was meiner Meinung nach der richtige Ansatz ist.
Public Class MyForm
Private _activeViewEvents As IActiveViewEvents_Event
Private Sub FormLoad(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
_activeViewEvents = TryCast(pMxDoc.ActiveView.FocusMap, IActiveViewEvents_Event)
AddHandler _activeViewEvents.SelectionChanged, AddressOf SelectionChanged
End Sub
Private Sub SelectionChanged
'do something when selection is changed
End Sub
Private Sub FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
RemoveHandler _activeViewEvents.SelectionChanged, AddressOf SelectionChanged
End Sub
End Class
Ich nehme diesen Ansatz bereits, aber leider bleibt das Problem bestehen. Mein Formular ist auch an Dokumentereignisse angehängt, so dass es nie geöffnet bleibt, wenn das Dokument geändert wird. Jedes Mal, wenn das Kartendokument geändert wird, muss der Benutzer das Formular erneut laden, sodass FormLoad() die Handler für das neue Dokument immer neu erstellt. Ich vermutete, dass es mit der Änderung der Kartendokumente zusammenhing, also werde ich ein wenig genauer hinschauen. – Courlu
Gibt es eine Chance, dass Sie eine Ressource mit 'Marshal' oder' ComReleaser' entsorgen? – Jumpercables
Nein, ich entsende immer nur Suchcursor, aber nichts mit dieser Form oder diesem Ereignis. – Courlu