经过几天的谷歌搜索试图找到我的问题的确切答案后,这是最后的手段.
我创建了一个Windows服务,一个Windows窗体和一个Remoting对象(所有这些都在C#中).我正在使用Remoting对象使用事件在服务和表单之间进行通信.
以下是对象之间典型交互的简化示例:
这一切都很好,一切都在前5分钟左右完美地相互作用.在那之后,对象之间的连接以某种方式被切断,我不能再在对象之间进行通信.
解决问题的第一个尝试是覆盖InitializeLifetimeService方法以返回null.这没有帮助(虽然它可以避免任何未来的租赁问题).
第二次尝试是创建RemoteObject的AdminForm和AdminService ISponsors ,并将它们设置为续订对象的租约.再次,没有解决问题.
在我的各种谷歌搜索中,我发现有人提到有关事件处理程序被垃圾收集的事情.我不确定这是不是问题,但我想我会提到它.
这是连接空闲超过5分钟后弹出的错误:
用户代码未处理System.Runtime.Remoting.RemotingException
消息="未找到请求的服务"
Source ="System.Runtime.Remoting"
现在,关于这一点的奇怪之处在于它发生在AdminService端.该AdminForm呼吁方法RemoteObject的罚款.这会弹出事件,然后AdminService会看到此事件,并尝试调用RemoteObject的方法LoadFormData(字符串数据),这就是抛出异常的地方.
我完全厌倦了谷歌搜索,因为我似乎无法找到我需要修复它.