gpt4 book ai didi

.net - 如果跨应用程序域访问类中的静态数据,会发生什么情况?

转载 作者:行者123 更新时间:2023-12-02 12:26:17 24 4
gpt4 key购买 nike

我有一个静态类,其中包含一些静态数据。如果从不同的应用程序域访问数据会发生什么?

  1. 每个域都会有一个静态类的副本吗?

  2. 原始类型会被复制吗?

  3. 如果数据可序列化怎么办?

最佳答案

AppDomain 之间的内存不共享。默认情况下,对象是深度克隆,如果它们是 MarshalByRef 那么它类似于跨 AppDomain 执行调用的远程处理,因此看起来是共享状态。

MarshalByRefObject is the base class for objects that communicate across application domain boundaries by exchanging messages using a proxy. Objects that do not inherit from MarshalByRefObject are implicitly marshal by value. When a remote application references a marshal by value object, a copy of the object is passed across application domain boundaries.

我不相信您实际上可以使用 AppDomain 方法调用静态成员,您最好的选择是将静态调用包装在实例类中并使用 DoCallback在另一个域中执行该代码并收集 MarshalByRef 对象中的状态。

请参阅 MSDN 上的示例

关于.net - 如果跨应用程序域访问类中的静态数据,会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7957868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com