Hi Community.
Dieses Problem macht mich schon seit Tagen verrückt. In meinem Programm verwende ich mehrere AppDomains. Nun möchte ich in der einen AppDomain ein Objekt (genauer gesagt: eine Liste) aus einer anderen AppDomain verändern.
Beispiel:
Code:
using System;
using System.Collections.Generic;
using System.Reflection;
namespace Beispiel {
class dasObjekt : MarshalByRefObject {
public Dictionary<string, object> config;
public dasObjekt() { config = new Dictionary<string, object>(); }
public void huhu() {
AppDomain myDomain = AppDomain.CreateDomain("myDomain");
myType myObject = (myType) myDomain.CreateInstanceAndUnwrap(
Assembly.GetAssembly(typeof(myType)).FullName,
typeof(myType).FullName
);
myObject.dingsda(this);
}
public static void Main() {
dasObjekt x = new dasObjekt();
x.config["x"] = "y";
x.huhu();
foreach (KeyValuePair<string, object> y in x.config)
Console.WriteLine("config[\"{0}\"] = \"{1}\"", y.Key, y.Value);
Console.ReadLine();
}
}
class myType : MarshalByRefObject {
public myType() {
}
public void dingsda(dasObjekt x) {
x.config["a"] = "b";
}
}
}
Dummerweise kommt diese Änderung (config["a"] = "b") aber nie bei
dasObjekt an.
Das Programm gibt nur
anstatt von
Code:
config["x"] = "y"
config["a"] = "b"
aus.
Weiß jemand, wie man dieses Problem beseitigen könnte?
[edit 2006-03-18 14:18] Formulierung etwas geradegebogen...