【问题标题】:How to call a service when a SilverLight OOB app is closing an如何在 SilverLight OOB 应用程序关闭一个服务时调用服务
【发布时间】:2010-10-24 19:41:25
【问题描述】:

当我的 SilverLight 应用退出时,我需要调用 WCF 服务进行更新。 这是一个浏览器外的应用程序,我正在使用 SL4。

由于 SL 中的 WCF 只能异步工作,因此无法在 Application.Exit 上执行

我也尝试了可用于 OOB 的 MainWindow.Closing,但这也不起作用。

尝试使用线程锁定使 Closing 函数等待 WCF Completed 回调,但它只是挂起。

有什么想法吗?

沙哈

【问题讨论】:

    标签: silverlight wcf silverlight-4.0 out-of-browser


    【解决方案1】:

    保存数据并在下次启动时提交

    无论您在哪个平台上,在退出时调用服务都是一项棘手的功能。您不能真正保证会发生这种情况,因为您的进程可能会在调用之前退出,原因有很多(任务管理器、logff、关机、蓝屏等)。如果您正在编写重要数据,例如系列中的最后一条记录,那么您最好将自己打开到部分数据集,最坏的情况是损坏的数据。

    最好将所有服务器通信作为一次性事务进行。如果您在退出时提交的数据用于日志记录或度量目的(例如,应用程序运行了多长时间,“foo”被调用了多少次),更好的模式是不断将数据保存到磁盘,然后进行计算和下次启动应用时提交数据。

    【讨论】:

    • 感谢您的回答,但我需要通知服务器和其他应用程序我的 SL 应用程序同步关闭。例如,我打开了一个双工端口以将更新推送到客户端,我需要知道从更新列表中删除关闭的客户端。
    • 在服务器上,在推送更新时发现断开的连接后将其删除。您的关闭技术通知将无法可靠地工作。
    猜你喜欢
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    • 2011-10-14
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多