none
Application_Exit 问题 RRS feed

答案

全部回复


  • 我想你不可能在Application_Exit也没有必要在这个事件中调用WCF。

    我认为你是想当程序退出的时候,给服务器发个什么信息之类的,对不?

    但是你要考虑,有很多原因会导致系统关闭,未必是正常关闭系统。比如:断线、关闭浏览器、程序出错、计算机崩溃,都可能导致程序的费正常退出。那么你用Application_Exit就毫无意义了。

    当然,不是不可以让服务器得到客户端已经退出的信息,但是我告诉你,如果要很好地判断客户端退出是非常麻烦的一件事情。比如居于Seesion、Socket心跳包等都可以判断客户端掉线,但是比较复杂。

    我觉得,要看你的具体要求,不一定非得用Application_Exit,用他有没有意义?

    2010年3月3日 17:00
  • 我是在做一个用户在线不在线的功能,同一个用户ID不能在两个地方同时登陆,其实排除掉那些非正常关闭的情况还是有很多机会可以去到Application_Exit里的
    这个silverlight文档里的说明

    当发生以下操作之一时,将发生 Application.Exit 事件:

    • 用户关闭承载 Silverlight 插件的网页。

    • 用户刷新宿主网页。

    • 用户将浏览器导航出宿主网页。

    • 宿主网页使用 JavaScript 和 HTML DOM 从页中删除插件。

    • 用户注销或关闭操作系统。

    我的这个系统用户的在线状态是这样做的,客户端定时向服务器发一个自己在线的消息,服务器端也有一个线程在看这些客户端是否在指定的时间间隔内刷新过自己的状态,如果没有的话就算是不在线了,如果不在Application.Exit 里做下线的处理过一段时间他的在线状态也会被清掉,可是如果用户刷新宿主网页,再去login画面的时候在线的状态不能及时的反应,有一定的延时,这样对用户不是太友好,所以想在Application.Exit 里做一下下线的处理,在Application.Exit里调用wcf倒是找到一种解决方案,不过觉得不好,想看看有什么好的方法

    • 已编辑 zysc 2010年3月4日 2:53
    2010年3月4日 2:45
  • 那么你应该是再Server端判断,而不是再Client断判断。
    Client断只要定时给Server断发心跳信息。
    2010年3月4日 2:50
  • Application.Exit里什么也不做现在的系统也是正常的,只不过在线状态有延时罢了,正因为延时才想到时在Application.Exit里面处理,虽然说Application.Exit不能100%保证可以执行,但是能做的为什么不做呢?至少可以消除一些延时的情况

    2010年3月4日 5:08
  • 我只想知道Application.Exit里面调用wcf比较好的方法而已
    2010年3月4日 5:10
  • 你好,
       
        在Application Exit事件中,目前是不支持做wcf调用的。
     
       
    2010年3月8日 4:48