繁体   English   中英

如何知道两个项目是否在同一appdomain中

[英]how to know if 2 projects are at the same appdomain

我在相同的解决方案中创建了5个项目,假设它们都具有相同的应用程序域,因此它们都可以共享静态变量(因为每个appdomain都是静态的),那么如何确保它们都位于同一appdomain上? 如果不是,那么如何使它们全部运行在同一个应用程序域中。 还有我怎么给他们相同的命名空间,它们都仍然有自己的命名空间?

例如project1命名空间是Bigproject.project1project2命名空间是Bigproject.project2 ,依此类推?

(我在尝试使用winf应用程序时遇到麻烦)

这不是一个带有库的项目,而是2个带有1个win窗体和2个库的控制台应用程序,问题是其中一个控制台窗体从该库获取的实例与win窗体的实例不同,在此实例中,我指的是静态变量的实例,因此,我怀疑即时通讯不在同一appdomain上运行

AppDomain特定于流程。 只需在同一过程中运行它们即可。

一个进程可以具有多个AppDomain。 如果要创建AppDomain或在不同的进程中运行这些程序集,则将手动管理它们之间的通信。

我在相同的解决方案中创建了5个项目,假设它们都具有相同的应用程序域,因此它们都可以共享静态变量

如果您的解决方案具有引用其他库的单个可执行文件,那么我认为这是一个合理的假设。

我如何确保它们都在同一个应用程序域中?

应用程序域将由引用它们的程序集确定。 您不能“确保”两个库将被加载到同一个应用程序域中-两个单独的应用程序引用单独的应用程序域中的库是完全合理的。

就是说,如果库由相同的可执行文件引用,则它们位于相同的应用程序域中(您必须将程序集显式加载到单独的应用程序域中)

这不是一个带库的项目,而是2个控制台应用程序和1个获胜表格和2个库

然后,您需要使用一些进程间通信(Web服务,WCF)或中央存储库(数据库)。

项目不是AppDomains的同义词,除非您专门创建一个新的应用程序域,否则您在应用程序中引用的所有对象很可能都通过它们的入口点机制位于同一应用程序域中。 该机制可以是.exe或ASP.NET等下的Web请求。

常见的例外情况是:

  • 通过WCF或.NET Remoting(RPC,IPC)进行通信时
  • 通过任何SOA传输(例如HTTP等)进行通信...

至于从一个应用程序域到另一个应用程序域通信的症状,您会看到调用堆栈中包含代理,请参阅MarshalByRefObjectContextBoundObject

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM