我有一个应用程序,它需要在多个AppDomains之间发送中等数量的消息。我知道我可以使用远程处理来实现这一点,但我也注意到有跨域委托。有没有人看过这类问题?
发布于 2008-11-24 14:52:00
我已经成功地使用了带有命名管道绑定的WCF。使用命名管道不会创建网络流量,并使用二进制编码,因此它应该非常快,而不会牺牲未来扩展场景中的分发能力。
编辑:有关更详细的信息,请参阅here,其中包括到实现示例的链接。
发布于 2008-11-24 15:27:53
跨域委托只允许一个没有参数的void方法,而且它可能不是你想的那样。它只是一个简单的回调,用于从一个应用程序域到另一个应用程序域的通知目的,例如像InitComplete()之类的方法。
远程处理是唯一的选择,无论您将其称为WCF还是其他任何东西,传递可序列化类型,还是使用MBRO类型(MarshalByRefObjects)。这并不像你想的那么难。
-Oisin
发布于 2012-06-17 20:19:37
我刚刚发现你也可以使用AppDomain.SetData,但这只是从主域到子域的一种方式。
static void RunInChildDomain()
{
AppDomain childDomain = AppDomain.CreateDomain("friendlyName");
string parameterValue = "notmii";
childDomain.SetData("parameter", parameterValue);
childDomain.DoCallBack(PrintName);
}
static void PrintName()
{
string Name = Convert.ToString(AppDomain.CurrentDomain.GetData("parameter"));
Console.WriteLine(Name);
}
您还可以使用AppDomain.FirstChanceException事件在子应用程序域和主机应用程序域之间创建异常驱动的通信:)
https://stackoverflow.com/questions/314268
复制相似问题