Mam właściwość, której wystąpienie chcę być w innej domenie.CreateInstanceAndUnwrap and Domain
public ModuleLoader Loader
{
get
{
if(_loader == null)
_loader = (ModuleLoader)myDomain.CreateInstanceAndUnwrap(
this.GetType().Assembly.FullName,
"ModuleLoader",
false,
System.Reflection.BindingFlags.CreateInstance,
null,
null,
null,
null);
System.Diagnostics.Debug.WriteLine("Is proxy={0}",
RemotingServices.IsTransparentProxy(_loader));
//writes false
_loader.Session = this;
return _loader;
}
}
To działa dobrze. Ale zakładam, że wszystkie wywołania metody na instancję _loader będą wywoływane w innej domenie (myDomain). Ale po uruchomieniu następującego kodu nadal pisze główną domenę aplikacji.
public void LoadModule(string moduleAssembly)
{
System.Diagnostics.Debug.WriteLine("Is proxy={0}",
RemotingServices.IsTransparentProxy(this));
System.Diagnostics.Debug.WriteLine(
AppDomain.CurrentDomain.FriendlyName);
System.Diagnostics.Debug.WriteLine("-----------");
}
Czy to z powodu Unwrap()? Gdzie robię źle?
Rozumiem, że AppDomain tworzy oddzielną pamięć. Potrzebuję moich głównych uruchomień aplikacji, ładuje moduły w różnych AppDomain. Ponieważ główna aplikacja chce również oglądać aktywność modułów i interakcji z obiektami działającymi w oddzielnej domenie, jaki jest najlepszy sposób, aby to osiągnąć.
Chciałbym dodać +100 – Igorek