iluxa1810 Asked:2020-01-09 05:26:46 +0000 UTC2020-01-09 05:26:46 +0000 UTC 2020-01-09 05:26:46 +0000 UTC 应用程序域,生命周期 772 Richter 写道,由于另一个域中的类型没有根,因此 CLR 采用了一个技巧:代理对象从它们最后一次访问的那一刻起存活约 5 分钟,之后它们就死了。 事实证明,这些对象需要不断地“踢”,这样CLR才不会卸载它们,如果卸载了,然后再创建它们? c# 1 个回答 Voted Best Answer MSDN.WhiteKnight 2020-05-28T13:19:10Z2020-05-28T13:19:10Z 5 分钟是MarshalByRefObject默认的生存时间(初始时间,而不是最后一次访问之后)。可以通过LifetimeServices.LeaseTime在目标域中设置静态属性来更改它: public class MyObject : MarshalByRefObject { static MyObject() { TimeSpan t = TimeSpan.FromHours(24); LifetimeServices.LeaseTime = t; } } 但是最好覆盖InitializeLifetimeService需要长寿的特定对象上的方法,以便它返回null: [SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.Infrastructure)] public override object InitializeLifetimeService() { return null; } 那么这个对象将不受生命周期管理,只有在整个域被卸载时才会死掉。
5 分钟是
MarshalByRefObject默认的生存时间(初始时间,而不是最后一次访问之后)。可以通过LifetimeServices.LeaseTime在目标域中设置静态属性来更改它:但是最好覆盖
InitializeLifetimeService需要长寿的特定对象上的方法,以便它返回null:那么这个对象将不受生命周期管理,只有在整个域被卸载时才会死掉。