여러 AppDomains를 사용하여 관리되지 않는 dll의 메모리를 단절시킬 수 있습니까? 일부 내부 정적 전역 변수를 사용하여 관리되지 않는 dll이 있으면 다른 appdomains에서 관리되지 않는 dll을로드하면 어떻게됩니까? DLL이 서로 다른 주소 공간에로드되어 공유 데이터의 복사본을 모두 가지고 있다고 가정해도 되겠습니까?AppDomain 및 관리되지 않는 DLL
2
A
답변
3
아니요, 불가능합니다. AppDomains는 순수하게 관리되는 개념입니다. 관리되지 않는 DLL 상태는 프로세스 전체에 적용되며로드 된 DLL 복사본은 하나만있을 수 있습니다. 가능한 해킹은 다른 이름으로 DLL 파일의 복사본을 만드는 것입니다. 그러나 이것은 매우 불규칙하게 크기가 조정되며 pinvoke는 위임자를 작성하고 LoadLibrary + GetProcAddress를 사용하여 바인드해야하는 불쾌한 행위입니다.
더 깨끗한 대안은 DLL을로드하는 별도의 도우미 프로세스를 사용하는 것입니다. WCF와 같은 interop 메커니즘으로 그들과 대화하십시오.
평소와 마찬가지로, 감사합니다. –