Windows Phone资源密集型任务退出

时间:2012-11-25 23:52:06

标签: c# silverlight windows-phone-7 scheduled-tasks background-agents

我正在编写Windows Phone应用程序,它需要下载非常大的mp3文件,并将它们保存到独立存储中。我已经有了这个工作的所有代码,我用较小的文件测试它,但现在使用实际文件并使用调试输出监视代码正在做什么,我已经意识到线程实际上正在中途退出下载,文件从未真正完成下载。

是否有理由发生这种情况,如果是这样,我该怎么做才能防止这种情况发生?

2 个答案:

答案 0 :(得分:2)

之后多长时间?如果您使用HttpWebRequest下载文件,则默认超时为100,000毫秒(100秒)。这可以像插入一样简单地改变:

HttpWebRequest.Timeout = 10;

显然设置自己的超时(以毫秒为单位!)并将其附加到WebRequest:)

如果你没有使用HttpWebRequest,请告诉我你在使用什么,我会尽力让你知道:)

答案 1 :(得分:0)

WP的内部存储器和进程管理负责这一点。如果你从你的应用程序中生成了一个线程,它会在后台下载大量数据操作系统会在其他进程需要这些资源(通过大多数机会内存)时将其删除。

根据您的下载方法,您可以做两件事:

  1. 当缓冲区达到一定大小时,定期在IsolatedStorage中保存缓冲区块,从而限制线程的内存使用量。
  2. 将下载线程实现为BackgroundTask,这应该允许“无限”执行。