なぜバックグラウンドタスクが開始されないのかを理解しようとしていますが、何が間違っているのかわかりません。
私がやろうとしていること:WebApiを介して最新の5つのアイテムをダウンロードする自動化されたバックグラウンドタスクが必要です(データは数kBです)。ダウンロード後、ローカルファイルをチェックして、利用可能な新しいアイテムがあるかどうかを確認します。もしそうなら、新しいアイテムの数でLiveTileにバッジを作成したいと思います。
私は次のコードを持っています:
private BackgroundTaskRegistration ScheduleBackgroundTask()
{
foreach (var cur in BackgroundTaskRegistration.AllTasks)
{
if (cur.Value.Name == "TimeTriggeredTask")
{
return (BackgroundTaskRegistration)(cur.Value);
}
}
var builder = new BackgroundTaskBuilder();
builder.Name = "TimeTriggeredTask";
builder.TaskEntryPoint = "Tasks.UpdateItemTask";
builder.SetTrigger(new MaintenanceTrigger(15, false));
builder.AddCondition(new SystemCondition(SystemConditionType.InternetAvailable));
builder.AddCondition(new SystemCondition(SystemConditionType.UserNotPresent));
BackgroundTaskRegistration task = builder.Register();
return task;
}
そして私の仕事は次のようになります:
namespace Tasks
{
public sealed class UpdateItemTask : IBackgroundTask
{
public async void Run(IBackgroundTaskInstance taskInstance)
{
Debug.WriteLine("Starting");
BackgroundTaskDeferral _deferral = taskInstance.GetDeferral();
DataHandler dataHandler = new DataHandler();
BindableCollection<GeekAndPokeItemViewModel> latestItemsOnline = await dataHandler.GetData("10");
BindableCollection<GeekAndPokeItemViewModel> latestItemsLocal = await dataHandler.GetLocalData();
int difference = latestItemsOnline.Except(latestItemsLocal).Count();
if (difference > 0)
{
BadgeUpdateManager.CreateBadgeUpdaterForApplication().Clear();
BadgeNumericNotificationContent badgeContent = new BadgeNumericNotificationContent((uint)difference);
// send the notification to the app's application tile
BadgeUpdateManager.CreateBadgeUpdaterForApplication().Update(badgeContent.CreateNotification());
}
_deferral.Complete();
}
}
}
私のappmanifestでは、backgroundTaskはタスク「タイマー」と正しいエントリポイントで拡張されています。
すべてのコードは1つのプロジェクトに含まれています。
デバッガーが接続されていても(アプリを起動せずにプログラムをデバッグし、タスクを強制的に起動します)、タスク(またはブレークポイント)にヒットせず、イベントビューアーで次の結果が得られます。
エントリポイントTasks.UpdateItemTaskと名前TimeTriggeredTaskを持つバックグラウンドタスクは、エラーコード0x80010008でアクティブ化できませんでした。
私はMSバックグラウンドタスクのサンプルをチェックしてきましたが、それらでも役に立ちません。これはそれほど難しいことではないことをお勧めしますが、うまくいくことはできません。