2014-03-06 2 views
0

저는 주기적으로 피드의 새 항목을 확인하기 위해 작업중인 Win 8 앱에 백그라운드 작업을 작성했습니다. 작업이 작동하고 앱이 실행되면 완료 핸들러가 성공적으로 실행됩니다. 그러나 진행 이벤트 처리기를 시작할 수 없습니다. 나는 이벤트를 등록하는 헬퍼 클래스를 사용하고/핸들러Windows 8 백그라운드 작업 진행 핸들러 활성화 중

public static async void RegisterBackgroundTask(string taskName, string entryPoint, uint checkTime, BackgroundTaskCompletedEventHandler completionMethod, BackgroundTaskProgressEventHandler progressHandler = null) 
     { 
      var backgroundAccessStatus = await BackgroundExecutionManager.RequestAccessAsync(); 
      if (backgroundAccessStatus == BackgroundAccessStatus.AllowedMayUseActiveRealTimeConnectivity || 
       backgroundAccessStatus == BackgroundAccessStatus.AllowedWithAlwaysOnRealTimeConnectivity) 
      { 
       foreach (var task in BackgroundTaskRegistration.AllTasks) 
       { 
        if (task.Value.Name == taskName) 
        { 
         // Re-Register progress completion event handler. 
         task.Value.Completed += completionMethod; 
         task.Value.Progress += progressHandler; 

         return; // The task is already registered, so no need to set again. 
        } 
       }... 

The progress code: 

private async void OnBackgroundTaskProgress(IBackgroundTaskRegistration task, BackgroundTaskProgressEventArgs e) 
     { 

      await dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,() => 
       { 
        uint percentage = e.Progress; 

        Debug.WriteLine("Background task progress: " + e.Progress); 

        SubscriptionManager manager = (SubscriptionManager)App.Current.Resources["subManager"]; 

        var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings; 

        if ((bool)localSettings.Values["currentlyCheckingPodcast"]) 
        { 
         if (podcastUpdateStatus.Visibility == Windows.UI.Xaml.Visibility.Collapsed) 
         { 
          podcastUpdateStatus.Visibility = Windows.UI.Xaml.Visibility.Visible; 
         } 

         podcastUpdateStausText.Text = (string)localSettings.Values["currentCheckName"] + " " + (int)localSettings.Values["checkNo"] + "/" + manager.Subscriptions.Count; 
        } 

        if (e.Progress == 100) { podcastUpdateStatus.Visibility = Windows.UI.Xaml.Visibility.Collapsed; } 
       }); 
     } 

그리고 내 등록 코드를 다시 연결합니다 :

BackgroundTaskHelpers.RegisterBackgroundTask("TileUpdater", "NarrowCastBackgroundTasks.TileUpdater", checkTimeuint, OnBackgroundTaskComplete, OnBackgroundTaskProgress); 

이 어떤 도움을 주시면 감사하겠습니다을!

답변

0

누락 된 것이 무엇인지 알아 냈습니다. 진행률 이벤트 처리기는 백그라운드 작업 인스턴스에서 진행률 속성을 설정할 때만 발생합니다.

관련 문제