Felice Pollano
Felice Pollano

Reputation: 33272

AppDomain(s) and unmanaged dll

Can multiple AppDomains be used to insulate memory in unmanaged dll too? Just to clarify, if I have an unmanaged dll using some internal static global variable, what will happen if I load that unmanaged dll in different appdomains? Can I safely suppose the dll will be loaded in different address spaces so they have all its own copy of the shared data?

Upvotes: 2

Views: 458

Answers (1)

Hans Passant
Hans Passant

Reputation: 942538

No, that's not possible. AppDomains are purely managed concept. Unmanaged DLL state is process-wide and there can be only one copy of the DLL loaded. A possible hack is to create copies of the DLL file with different names. It however scales very poorly and the pinvoke is nasty, having to write delegates and use LoadLibrary + GetProcAddress to bind them.

The cleaner alternative is to use separate helper processes that loads the DLL. Talk to them with an interop mechanism like WCF.

Upvotes: 4

Related Questions