Фоновые проблемы с передачей файлов - PullRequest
6 голосов
/ 21 ноября 2011

У меня есть эта проблема при использовании фоновой передачи файлов в WP7.Он отлично работает, когда мое приложение работает, но как только я нажимаю кнопку Windows, он останавливается (и возобновляет работу, когда я снова активирую приложение.) Фоновая передача файлов не предназначена для запуска в фоновом режиме, даже когда вашприложение деактивировано?Должен ли он быть в отдельном классе (какой-то класс фонового агента, отдельный от основного проекта?) Действительно расстраивает, когда я делаю все, что здесь говорится в учебнике: http://msdn.microsoft.com/en-us/library/hh202959(v=vs.92).aspx.

Есть ли некоторые«особые» вещи, которые мне нужно сделать, чтобы убедиться, что он работает в фоновом режиме, или некоторые методы, может быть, те, которые я создал сам (для получения URL-адреса и т. д.), к которым нельзя получить доступ, пока они отключены?Не могу ли я добавить в очередь, пока она деактивирована, может быть?

Большое спасибо за ваше время:)

РЕДАКТИРОВАТЬ: Небольшая отладка говорит мне, что файл в очереди на самом деле загружается.Он завершается, но не получает следующий, пока я не активирую приложение.Могу ли я не использовать свои собственные методы, переменные и т. Д. При этом?Может быть, у меня есть внутренняя очередь, скажем, на 20 пунктов.Как я могу заполнить очередь загрузки (максимум 5), когда она достигает нуля?

EDIT2: в примере от Microsoft они говорят, что вы можете добавить в очередь позже:

// Check to see if the maximum number of requests per app has been exceeded.
if (BackgroundTransferService.Requests.Count() >= 5)
{
// Note: Instead of showing a message to the user, you could store the
// requested file URI in isolated storage and add it to the queue later.
MessageBox.Show("The maximum number of background file transfer requests for this application has been exceeded. ");
return;
}

Но это не говорит, можем ли мы сделать это в фоновом режиме или нет.Поскольку речь идет о фоновой передаче файла, они должны были упомянуть об этом, в противном случае мы должны предполагать, что это может быть сделано в фоновом режиме, что, похоже, не так.Но мы не можем этого знать.Кто-нибудь, кто может подтвердить это 100%?

1 Ответ

3 голосов
/ 21 ноября 2011

Я также изучил это, и невозможно (основываясь на моих исследованиях) заполнить очередь после макс.5 загрузок в очереди завершены.Я думал об использовании фонового агента, но BackgroundTransferRequest.Add недоступен из фоновых агентов, и это означает, что единственный способ поставить в очередь дополнительные загрузки - это когда ваше приложение работает (см. Неподдерживаемые API для фоновых агентов для Windows Phone ).

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

...