none
Remoting 客户端/服务端如何取消执行? RRS feed

  • 问题

  • 假设我通过 Activator.GetObject() 获取到 Test.

    然后执行 服务端的 Test.Add(1,1);这个方法里我阻塞了10秒。

    请问在客户端如何取消执行?

     

    我简单描述下几个情形:
    1、客户端执行服务器某个大型事务。但执行一半,对方可以手动“终止”。

    2、客户端执行服务器某个大型事务。但执行一半,客户端系统关闭了。但服务器仍然在执行这个大型事务。我做了一个定时,那该如何检查,当前正在执行的这个函数的客户端是否已经“断线”?

     

    关于第一点,我尝试用线程去终止,这样的是可以的。但是没有其他方式的吗?

     关于第二点,在WCF中,可以使用 OperationContext 来进行判断客户端状态。但Remoting ,请问需要用哪一种方式?


    Vseen
    2011年7月21日 7:54

答案

  • dear

    1.如果是我我也会使用线程终止工作

    2.如果是我我可能会在Server执行工作前检查Client是否存在,可以用httpRequest / httpResponse 来接收与传送,或者由另一条线程来处理这样的工作


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    • 已标记为答案 Cookie Luo 2011年7月25日 7:13
    2011年7月21日 17:12

全部回复

  • dear

    1.如果是我我也会使用线程终止工作

    2.如果是我我可能会在Server执行工作前检查Client是否存在,可以用httpRequest / httpResponse 来接收与传送,或者由另一条线程来处理这样的工作


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    • 已标记为答案 Cookie Luo 2011年7月25日 7:13
    2011年7月21日 17:12
  • 关于第二点。

    你的说法和我的想法差不多。有点类似。客户端和服务端互相绑定事件,定时检查对方是否有效。

    但是,我想使用的是底层一点的方式。否则客户端还需要额外的工作。

    比如 IServerChannelSink 接口。我甚至通过反射去获取到 IServerChannelSink.ProcessMessage 函数的IServerChannelSinkStack参数。因为通过反射这个参数,可以获取到一个 Socket,无奈的是,这个似乎不是我想要的Socket。


    Vseen
    2011年7月22日 1:16
  • dear

    一来一往的验证通讯本来就是必须的,Client向您请求资料,你要回资料前去验证他身份是否吻合,一点都不为过吧^^


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2011年7月22日 2:53
  • 那只能这样了。哎~
    Vseen
    2011年7月22日 3:12