0

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

发生这种情况是否有原因,如果有,我能做些什么来防止这种情况发生?

4

2 回答 2

2

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

HttpWebRequest.Timeout = 10;

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

如果您不使用 HttpWebRequest,请告诉我您在使用什么,我会尽力帮助您:)

于 2012-11-26T00:10:49.313 回答
0

WP 的内部存储器和进程管理负责这一点。如果您从您的应用程序中生成了一个线程,该线程在后台操作系统中下载了大量数据,那么当其他进程需要这些资源(大多数情况下是内存)时,会将其丢弃。

您可以做两件事,具体取决于您的下载方法:

  1. 当缓冲区达到一定大小时,定期将缓冲区块保存在隔离存储中,从而限制线程的内存使用。
  2. 将下载线程实现为 BackgroundTask,它应该允许“无休止”的执行。
于 2012-11-26T00:13:56.707 回答