小编Mat*_*t P的帖子

为什么我的C#Remoting对象超时,即使Lifetime返回null?

经过几天的谷歌搜索试图找到我的问题的确切答案后,这是最后的手段.

我创建了一个Windows服务,一个Windows窗体和一个Remoting对象(所有这些都在C#中).我正在使用Remoting对象使用事件在服务和表单之间进行通信.

以下是对象之间典型交互的简化示例:

  • AdminForm调用RemoteObject的方法RequestLoadForm()
  • RemoteObject会触发AdminService正在侦听的事件
  • AdminService会收到有关该事件的警报,并在RemoteObject上调用LoadFormData(字符串数据)
  • RemoteObject会触发AdminForm正在侦听的事件
  • AdminForm会收到有关该事件的警报,并可以使用字符串数据在AdminForm的控件上设置值

这一切都很好,一切都在前5分钟左右完美地相互作用.在那之后,对象之间的连接以某种方式被切断,我不能再在对象之间进行通信.

解决问题的第一个尝试是覆盖InitializeLifetimeService方法以返回null.这没有帮助(虽然它可以避免任何未来的租赁问题).

第二次尝试是创建RemoteObject的AdminFormAdminService ISponsors ,并将它们设置为续订对象的租约.再次,没有解决问题.

在我的各种谷歌搜索中,我发现有人提到有关事件处理程序被垃圾收集的事情.我不确定这是不是问题,但我想我会提到它.

这是连接空闲超过5分钟后弹出的错误:

用户代码未处理System.Runtime.Remoting.RemotingException
消息="未找到请求的服务"
Source ="System.Runtime.Remoting"

现在,关于这一点的奇怪之处在于它发生在AdminService端.该AdminForm呼吁方法RemoteObject的罚款.这会弹出事件,然后AdminService会看到此事件,并尝试调用RemoteObject的方法LoadFormData(字符串数据),这就是抛出异常的地方.

我完全厌倦了谷歌搜索,因为我似乎无法找到我需要修复它.

.net c# events remoting windows-services

9
推荐指数
1
解决办法
8770
查看次数

标签 统计

.net ×1

c# ×1

events ×1

remoting ×1

windows-services ×1