当我的 SilverLight 应用程序退出时,我需要调用 WCF 服务进行更新。这是一个浏览器外的应用程序,我正在使用 SL4。
由于 SL 中的 WCF 只能异步工作,因此无法在 Application.Exit 上执行
我也尝试了可用于 OOB 的 MainWindow.Closing ,但这也不起作用。
尝试使用线程锁定使 Closing 函数等待 WCF Completed 回调,但它只是挂起。
有任何想法吗?
沙哈尔
当我的 SilverLight 应用程序退出时,我需要调用 WCF 服务进行更新。这是一个浏览器外的应用程序,我正在使用 SL4。
由于 SL 中的 WCF 只能异步工作,因此无法在 Application.Exit 上执行
我也尝试了可用于 OOB 的 MainWindow.Closing ,但这也不起作用。
尝试使用线程锁定使 Closing 函数等待 WCF Completed 回调,但它只是挂起。
有任何想法吗?
沙哈尔
保存数据并在下次启动时提交
无论您在哪个平台上,在退出时调用服务都是一个棘手的功能。您不能真正保证会发生这种情况,因为您的进程可能会在调用之前退出,原因有很多(任务管理器、logff、关机、蓝屏等)。如果您正在编写重要数据,例如系列中的最后一条记录,那么您最好将自己打开到部分数据集,而最坏的情况是损坏的数据。
最好将所有服务器通信作为批量事务进行。如果您在退出时提交的数据是用于日志记录或度量目的(例如应用程序运行了多长时间,“foo”被调用了多少次),更好的模式是不断将您的数据保存到磁盘,然后进行计算和下次启动应用程序时提交数据。