Windows Phone 7 Mango (7.1) - фоновая задача не вызывается повторно - PullRequest
4 голосов
/ 20 июня 2011

Я использую фоновую задачу для выполнения действий, когда приложение не запущено. Ниже приведен пример кода, который следует вызывать каждые 30 минут и добавить метку времени в файл в изолированном хранилище. Проблема в том, что фоновая задача (событие OnInvoke) вызывается только во время добавления (ScheduledActionService.Add (periodTask);). Это не называется каждые 30 минут.

protected override void OnInvoke(ScheduledTask task)
{
using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
{
    if (myIsolatedStorage.FileExists("testbg.txt"))
    {
        EditExistingFile("testbg.txt", DateTime.Now.ToString() + Environment.NewLine);
    }
    else
    {
        CreateNewFile("testbg.txt", DateTime.Now.ToString() + Environment.NewLine);
    }
}

NotifyComplete();
}

public static void StartBackgroundTask()
{
PeriodicTask periodicTask = new PeriodicTask("Project One Tasks");

// The description is required. This is the string that the user
// will see in the background services Settings page on the device.
periodicTask.Description = "Performs various activities related to Project One.";
periodicTask.ExpirationTime = DateTime.Now.AddDays(10);

// If the agent is already registered with the system,
// call the StopPeriodicAgent helper method.
if (ScheduledActionService.Find(periodicTask.Name) != null)
{
    StopBackgroundTask();
}

ScheduledActionService.Add(periodicTask);
}

Edit:

Одна вещь, которую я заметил, когда я запускаю Периодическую или ResourceIntensive Task, я получаю следующий диалог:


Microsoft Visual Studio 2010 Express для Windows Phone

Удаленное соединение с устройством потеряно. Пожалуйста, проверьте подключение устройства и перезапустите отладку.

OK

Кто-нибудь получал это сообщение при вызове Задачи?

Ответы [ 4 ]

2 голосов
/ 15 июля 2011

Beta 2 меняет это поведение. Вы перепроверили (и проверили это телефон Mango вместо эмулятора)?

0 голосов
/ 14 июня 2012

При отладке вы можете попытаться снова запустить задачу на гораздо более короткий промежуток времени.Хотя это не решит проблему, вам не нужно ждать полчаса, чтобы выяснить, что происходит.

0 голосов
/ 20 июня 2011

Как часто вы проверяете, что это работает?
30 минут не гарантированы и могут дрейфовать на целых 10 минут.

0 голосов
/ 20 июня 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...