Wie einem FatalExecutionEngineError (MDA) begegnen?

21/11/2008 - 15:15 von Stefan Offermann | Report spam
Hallo,

wir entwickeln eine Erweiterung von ArcGIS, dessen SDK auf C#-Wrappern
von COM-Objekten basiert. Zum Debuggen wird eine DLL mit unseren Klassen
erstellt, auf die die ArcGIS-Anwendung zugreifen kann. Die Typen werden
bei COM registriert. Zum Debuggen wird ArcMap.exe gestartet. Wenn der
Entwickler die Anwendung schließt, kommt genau nach der letzten Zeile
Usercode ein FatalExecutionEngineError-MDA. In den Details steht:

"Bei diesem Fehler kann es sich um ein Problem in der CLR oder in den
unsicheren oder nicht verifizierbaren Teilen der Benutzercodes handeln.
Übliche Ursachen dieses Bigs sind Marshallfehler für COM-Interop oder
PInvoke, die den Stapel beschàdigen könnten."

Wie kann man diesem Problem begegnen? Ich habe keine Ahnung, wie man der
Ursache auf die Schliche kommt.

Gruß, Stefan

Stefan Offermann
student of geoinformatic
research assistant, ifgi, wwu, muenster (westf.), germany
personal webpage: http://ifgi.uni-muenster.de/~offermann/
 

Lesen sie die antworten

#1 Frank Dzaebel
21/11/2008 - 15:42 | Warnen spam
Hallo Stefan,

Zum Debuggen wird ArcMap.exe gestartet.



das scheint der COM Server zu sein?.

Wenn der Entwickler die Anwendung schließt, kommt
genau nach der letzten Zeile Usercode ein
FatalExecutionEngineError-MDA.



Also vor dem Schliessen muss die App
normal alle ihre COM-Objekt-Referenzen
durch "Marshal.ReleaseComObject" freigeben.
Danach meist noch eine GC.Collect
und GC.WaitForPendingFinalizers. Etwa wie hier:

[How to properly clean up Excel interop objects in C# - Stack
Overflow]
http://stackoverflow.com/questions/...jects-in-c

________________

Arbeite ggf. auch folgende Möglichkeiten durch:

[FatalExecutionEngineError-MDA]
http://msdn.microsoft.com/de-de/lib...28990.aspx


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen