백그라운드 작업이 시작되지 않는 이유를 알아 내려고했지만, 내가 잘못하고있는 것을 전혀 모릅니다.백그라운드 작업이 시작되지 않음
무엇을하려고합니까? 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;
}
을 그리고 내 작업은 다음과 같습니다 : 내 appmanifest에서
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();
}
}
}
backgroundTask가 작업 "타이머"로하고 올바른 엔트리 포인트로 확장됩니다.
모든 코드는 1 개의 프로젝트에 있습니다. 심지어 (작업을 해고하는 응용 프로그램을 시작하지 않고 프로그램을 디버깅, 힘)에 부착 된 디버거
, 그것은 늘 내 작업 (또는 중단 점)을 명중하고 이벤트 표시기에서이 결과 제공 :
을진입 점 Tasks.UpdateItemTask 및 이름 TimeTriggeredTask가있는 백그라운드 작업이 오류 코드 0x80010008로 활성화되지 못했습니다.
나는 The samples of MS background Tasks을 확인했지만 도움이되지 않습니다. 나는 이것이 어렵지 않다고 제안 할 것이다. 그러나 나는 그것을 기울인다.
어쩌면 방금 작업을 로깅 메시지로 찾아서 찾을 수 없습니까? – Dreamwalker
디버거가 문제없이 실행 중입니다. 태스크 시작시 중단 점에 도달하지 않습니다. 즉, 태스크가 시작되지 않았 음을 의미합니다. 태스크를 로깅하는 것이 작업이 전혀 실행되지 않습니다 ... –
방금 유지 관리 트리거의 범주에 대한 [문서] (http://www.microsoft.com/en-us/download/details.aspx?id=27411) . 이 트리거는 실제로 (내 appmanifest에 정의 된) TimeTrigger 대신 SystemTrigger입니다. 나는 이것을 바꿨지만 여전히 결과가 없다. 나는 여전히 같은 오류 메시지를 가지고있다. ... –