如何在最小化应用程序并恢复Windows Phone 8时处理网络呼叫错误

时间:2014-08-12 13:49:32

标签: c# windows-phone-8

我正在从我的应用提交表单,它有一些文字和一些图片。因此,在提交表单时,将进行一系列网络调用以上传图像(我使用的是httpclient库)。

现在,当用户最小化应用并且网络呼叫仍在进行时,如何处理它?<​​/ p>

我尝试使用典型的try catch机制来处理,但是我无法获取Stream对象,因为当应用程序最小化时会丢弃流对象。当我尝试使用文件路径读取图像时,我也会收到未经授权的异常。

尝试使用BackgroundWorker,但仍然没有运气。

我想要实现的最终目标是,我希望在从最小化状态恢复时继续网络调用。

任何帮助或建议都会更有帮助。感谢。

1 个答案:

答案 0 :(得分:2)

当用户最小化您的应用时,会引发Deactivated事件。您将需要处理此事件,正常关闭所有网络调用,并将任何状态数据保存到隔离存储。手机操作系统允许您的应用程序使用10秒,因此必须有足够的时间来完成待处理的网络呼叫,或者丢弃它们。

请注意,在您的应用停用(最小化)后,它可能会在下次启动时保留,也可能不会保留。您必须处理Activated事件,并检查IsApplicationInstancePreserved - 如果保留,则您的页面和视图模型应该完好无损,否则您将需要从隔离存储中恢复其状态。 / p>

有关停用/激活生命周期的更多信息,请查看"App activation and deactivation for Windows Phone 8"

Activation life-cycle

此外,我不确定您是否知道background agents,即使您的应用不是,也可以运行{{3}}。这可能需要考虑,尽管可能比尝试将后台代理与应用程序本身同步更有麻烦。