System.Runtime.Remoting.RemotingException: has been disconnected or does not exist at the server


为实现策略dll的独立加载,使用了跨应用程序域(AppDomain)技术,这个问题必和AppDomain有关,而且能猜测,应该是和对象的生存期有关。经过一番搜寻,找到这篇文献:
 
由上述文献得知,错误是MarshalByRefObject派生类对象的生存期(这里应该是指不活动就销毁的时间间隔)默认为5分钟所致。URWPGSim2D的客户端和服务端加载独立的策略dll文件,用到了两个继承于MarshalByRefObject的类。一个是用于加载策略的工厂类StrategyInterfaceFactory,一个是策略类Strategy。在这两个类中重载(override)InitializeLifetimeService方法,让其返回null而非一个ILease实现,即可让这两个类的对象生存期无限。

        /// </summary>
        /// override the InitializeLifetimeService to return null instead of a valid ILease implementation
        /// to ensure this type of remote object never dies
        /// </summary>
        /// <returns>null</returns>
        public override object InitializeLifetimeService()
        {
            //return base.InitializeLifetimeService();
            return null; // makes the object live indefinitely
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值