我有一个 Silverlight 5 应用程序,它通过 WCF 服务与服务器通信。
大多数使用该应用程序的用户在浏览器中运行它(主要是 Internet Explorer,但也使用其他浏览器),少数用户安装它 OOB(浏览器外)。
当应用程序启动时,它会检查更新的版本并在必要时进行升级。这里没有什么不寻常的。
不时地,主要是在晚上和周末,我对解决方案进行升级。这可能是数据库中的更改、WCF 服务中的更改、Silverlight 应用程序本身的更改,或所有这些的混合。在大多数情况下,这绝对没有问题。
我的问题是有些用户从不关闭他们的网络浏览器。有些用户甚至通过 Citrix 窗口工作,下班后只关闭 Citrix 窗口回家,让 Silverlight 应用程序运行并存在于 Web 浏览器中。有些根本不关闭浏览器。或者,如果他们运行 OOB,他们会让应用程序保持打开状态。这些是我的问题。因为他们永远不会检查新的更新。Silverlight 应用程序永远不会升级,也不适合可能升级的新 WCF 服务。
这一切都使 Silverlight 应用程序崩溃并抛出奇怪的异常,因为周围的世界已经发生了变化。
有没有人遇到过类似的问题并且实际上找到了一个好的解决方案?
我努力了:
创建一个计时器,该计时器在任何键盘或鼠标单击时重置,并在给定时间段无活动后退出应用程序。但似乎这个计时器有时不算数,比如从 RDP 或 Citrix 会话进行 dosconnect 时。
每次显示某个控件或窗口时检查更新。但这不是一个好的解决方案,因为所有用户可能不会使用相同的。如果他们正在处理某些事情,它也可能会打断用户。
但在我看来,它们都像是有点俗气的变通办法。
任何建议,有人吗?