0

我正在编写Windows Phone应用程序,它需要下载非常大的mp3文件,并将它们保存到独立存储中。我已经掌握了所有这些工作的代码,并且我使用更小的文件对其进行了测试,但现在使用实际的文件并使用调试输出监视代码正在执行的操作,我意识到线程实际上正在退出一半下载和文件永远不会完成下载。Windows Phone资源密集型任务退出

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

回答

2

它超时多久?如果您使用HttpWebRequest下载文件,默认超时时间为100,000ms(100秒)。这可以改变简单地插入:

HttpWebRequest.Timeout = 10; 

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

如果你不使用HttpWebRequest的,让我知道你是什么使用和我会尽我所能,以帮助你:)

+0

我使用HttpWebRequest,但是,我找不到属性.Timeout? – AllFallD0wn

+0

@ AllFallD0wn看看http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.aspx和http://msdn.microsoft.com/en-us/library/system.net .httpwebrequest.timeout.aspx我没有安装WP7 SDK,所以不能有一个玩自己悲伤:( – ConnorRoberts

0

WP的内部存储器和流程管理需要关心这一点。如果您从您的应用程序中产生了一个线程,在后台操作系统下载大量数据,那么当其他进程需要这些资源(通过大部分机会内存)时,操作系统会将其删除。

你可以做两件事情,这取决于你的方法下载:

  1. 定期保存缓冲块在IsolatedStorage当缓冲区达到一定的规模,从而限制了线程的内存使用情况。
  2. 将下载线程作为BackgroundTask实现,它应该允许“无限”执行。
+0

我是对的认为一个ScheduledAgent是一个后台任务,如果是这样,下载已经一个后台任务,但是3个线程通过下载中途退出 – AllFallD0wn

+0

他们跑了10分钟? –

+0

我没有准确的时间,但不是10分钟,更像4,也许是5? – AllFallD0wn