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);
이 어떤 도움을 주시면 감사하겠습니다을!