【发布时间】:2009-08-09 05:59:06
【问题描述】:
我有以下代码:
public class AppDomainArgs : MarshalByRefObject {
public string myString;
}
static AppDomainArgs ada = new AppDomainArgs() { myString = "abc" };
static void Main(string[] args) {
AppDomain domain = AppDomain.CreateDomain("Domain666");
domain.DoCallBack(MyNewAppDomainMethod);
Console.WriteLine(ada.myString);
Console.ReadKey();
AppDomain.Unload(domain);
}
static void MyNewAppDomainMethod() {
ada.myString = "working!";
}
我认为这样做会让我的 ada.myString 有“工作!”在主 appdomain 上,但它没有。我认为通过从 MarshalByRefObject 继承,对第二个 appdomain 所做的任何更改也会反映在原来的那个中(我认为这只是主 appdomain 上真实对象的代理!)?
谢谢
【问题讨论】:
-
(添加了一点解释作为评论)
-
还要记住,为了跨域传递对象,它必须是可序列化的。正如我在浪费了很多天后发现的那样,这遗漏了许多 .NET 对象。
标签: c# .net vb.net remoting appdomain