2009-07-07 5 views
3

Ich habe eine .NET-Klasse, die ein C++ - COM-Objekt aufruft, das wiederum eine andere .NET-Klasse in COM aufruft. Ich habe festgestellt, dass die beiden .Net-Klassen in separaten App-Domains sind (was Probleme mit log4net macht). Beachten Sie, dass sie sich im selben Thread befinden.appdomains in COM-Interop

Warum ist das? Gibt es eine Möglichkeit, sicherzustellen, dass sie sich in derselben App-Domain befinden?

+0

In welchem ​​Kontext? IIS, Desktop-Anwendung? –

+0

Desktop-Anwendung –

Antwort

0

Der Aufruf einer .NET-Klasse, die als COM verfügbar gemacht wird, erfordert das Marshalling von Daten. AppDomains trennt den Datenzugriff. Wenn Sie eine COM-Komponente aufrufen (unabhängig davon, ob es sich um eine .NET-Anwendung handelt), müssen Sie sie sandboxen. In .NET verwendet Sand-Boxing andere AppDomain.