我很好奇 AppDomain 中的共享/静态对象生命周期,其中 RemotingCalls 是创建共享对象的原因。
我们正在使用使用客户端激活对象的远程处理设置,我们仅使用这些功能来访问服务器。远程对象设置为单例。
服务器设置通道并使用 RemotingConfiguration.Configure 加载配置文件。
其中一些服务器函数在服务器上接触并使用一些静态(在 vb.net 中共享)变量。我不知道这些静态变量的生命周期是什么,它们是在第一次被触摸时创建的(运行静态构造函数)。使用日志记录我看不到对象 dispose/finalize 发生。
在连接到远程服务器后等待几分钟,可以看到共享对象仍然存在并且运行良好。
问题:
那么这个远程设置中静态对象的预期生存时间是多少。它们是否与 AppDomain 一样长,或者当 Remoting 对象被交换时它们是否会被循环出去。如果需要,延长其使用寿命的正确方法是什么?
答案:
静态类型存在于 AppDomain 中,因为它们第一次访问直到 AppDomain 被卸载。因此,只要 AppDomain 正在运行,您就不需要延长它们的生命周期。