Выход из ресурсоемкой задачи Windows Phone

Я пишу приложение для Windows Phone, и ему нужно загружать очень большие mp3-файлы и сохранять их в изолированном хранилище. У меня есть весь код для этой работы, и я протестировал его с меньшими файлами, но теперь, используя фактические файлы и отслеживая, что делает код, используя вывод отладки, я понял, что потоки фактически завершаются на полпути. загрузки, и файлы никогда не заканчивают загрузку.

Есть ли причина для этого, и если да, то что я могу сделать, чтобы предотвратить это?


person AllFallD0wn    schedule 25.11.2012    source источник


Ответы (2)


Через какое время истекает тайм-аут? Если вы используете HttpWebRequest для загрузки файла, время ожидания по умолчанию составляет 100 000 мс (100 секунд). Это можно изменить так же просто, как вставить:

HttpWebRequest.Timeout = 10;

Очевидно, установив свой собственный тайм-аут (в миллисекундах!) И прикрепив его к вашему WebRequest :)

Если вы не используете HttpWebRequest, дайте мне знать, что вы используете, и я постараюсь вам помочь :)

person ConnorRoberts    schedule 26.11.2012
comment
Я использую HttpWebRequest, однако не могу найти свойство .Timeout? - person AllFallD0wn; 26.11.2012
comment
@AllFallD0wn Взгляните на http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.aspx и msdn.microsoft.com/en-us/library/ У меня больше не установлен WP7 SDK, поэтому, к сожалению, я не могу играть сам :( - person ConnorRoberts; 26.11.2012

Внутренняя память WP и управление процессами позаботятся об этом. Если вы создали поток из своего приложения, которое загружает много данных в фоновом режиме, ОС отключит его, когда эти ресурсы (скорее всего, память) потребуются для других процессов.

Вы можете сделать две вещи, в зависимости от вашего подхода к загрузке:

  1. Периодически сохранять фрагменты буфера в IsolatedStorage, когда буфер достигает определенного размера, тем самым ограничивая использование памяти потоком.
  2. Реализуйте поток загрузки как BackgroundTask, который должен разрешить «бесконечное» выполнение.
person Igor Perić    schedule 26.11.2012
comment
Правильно ли я думаю, что ScheduledAgent является фоновой задачей, и если это так, загрузка уже является фоновой задачей, но 3 потока продолжают выходить на полпути загрузки. - person AllFallD0wn; 26.11.2012
comment
Точно не засекал, но не 10 минут. Скорее 4, может 5? - person AllFallD0wn; 26.11.2012