Запретить фоновую задачу от обновления LiveTile - PullRequest
3 голосов
/ 10 ноября 2011

Мне очень нужна ваша помощь, потому что у меня неприятная проблема. Я загружаю данные в свой периодический агент (OnInvoke). Работает нормально, но каждый вечер веб-сайт, с которого я загружаю данные, не имеет данных для загрузки. Если это произойдет, я хочу, чтобы текущая плитка оставалась неизменной (а не пустой) с текущими данными и не обновлялась. Затем через один или два часа, когда появятся данные для загрузки и анализа, обновление должно продолжиться.

Я пробовал это, но когда вызывается NotifyComplete, код после того, как все еще выполняется Разве NotifyComplete не должен останавливать выполнение остальной части кода?

MatchCollection matchesMyData = rxMyData.Matches(strHTML);
foreach (Match matchMyData in matchesMyData)
{
    GroupCollection groupsMyData = matchMyData.Groups;
    //Code for handling downloaded data
}

if (matchesMyData.Count < 1)
{
    ShellToast toast = new ShellToast();
    toast.Title = "No update: ";
    toast.Content = "Webservice returned no data";
    toast.Show();

    NotifyComplete();
}

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

ShellTile TileToFind = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("TileID=2"));
if (TileToFind != null && intCount > 0)
{
    //Update the live tile
}

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

Пожалуйста, помогите, так как сейчас это шоу-стоппер. Заранее спасибо.

1 Ответ

2 голосов
/ 10 ноября 2011

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

Если добавитьоператор return после вызова NotifyComplete, тогда плитка не должна обновляться.

...