首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何最好地在AppDomains之间进行通信?

如何最好地在AppDomains之间进行通信?
EN

Stack Overflow用户
提问于 2008-11-24 14:26:07
回答 5查看 22.8K关注 0票数 39

我有一个应用程序,它需要在多个AppDomains之间发送中等数量的消息。我知道我可以使用远程处理来实现这一点,但我也注意到有跨域委托。有没有人看过这类问题?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-11-24 14:52:00

我已经成功地使用了带有命名管道绑定的WCF。使用命名管道不会创建网络流量,并使用二进制编码,因此它应该非常快,而不会牺牲未来扩展场景中的分发能力。

编辑:有关更详细的信息,请参阅here,其中包括到实现示例的链接。

票数 27
EN

Stack Overflow用户

发布于 2008-11-24 15:27:53

跨域委托只允许一个没有参数的void方法,而且它可能不是你想的那样。它只是一个简单的回调,用于从一个应用程序域到另一个应用程序域的通知目的,例如像InitComplete()之类的方法。

远程处理是唯一的选择,无论您将其称为WCF还是其他任何东西,传递可序列化类型,还是使用MBRO类型(MarshalByRefObjects)。这并不像你想的那么难。

-Oisin

票数 13
EN

Stack Overflow用户

发布于 2012-06-17 20:19:37

我刚刚发现你也可以使用AppDomain.SetData,但这只是从主域到子域的一种方式。

代码语言:javascript
复制
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事件在子应用程序域和主机应用程序域之间创建异常驱动的通信:)

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/314268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档