2016-10-03 18 views
0

バックグラウンドタスクで私のアプリをサポートするために、新しい 'バックグラウンドアクティビティをシングルプロセスモデル' APIで使用しようとしています。しかし、「OnBackgroundActivated」メソッドで「適切なメソッドがオーバーライドされていません」と表示されています。私のコードで何が間違っていますか?UWP OnBackgroundActivated、オーバーライドに適したメソッドが見つかりません

public MainPage() 
    { 
     this.InitializeComponent(); 
     Application.Current.EnteredBackground += Current_EnteredBackground; 
    } 

    private async void Current_EnteredBackground(object sender, Windows.ApplicationModel.EnteredBackgroundEventArgs e) 
    { 
     await RegisterBackgroundTask(); 
    } 

    protected override void OnBackgroundActivated(BackgroundActivatedEventArgs args) 
    { 
     // show a toast 
    } 

    private void Page_Loaded(object sender, RoutedEventArgs e) 
    { 

    } 

    private async Task RegisterBackgroundTask() 
    { 
     BackgroundAccessStatus backgroundAccessStatus = await BackgroundExecutionManager.RequestAccessAsync(); 

     if (backgroundAccessStatus == BackgroundAccessStatus.AllowedSubjectToSystemPolicy || 
      backgroundAccessStatus == BackgroundAccessStatus.AlwaysAllowed) 
     { 
      foreach (var bgTask in BackgroundTaskRegistration.AllTasks) 
      { 
       if (bgTask.Value.Name == "MyTask") 
       { 
        bgTask.Value.Unregister(true); 
       } 
      } 

      var builder = new BackgroundTaskBuilder(); 
      builder.Name = "MyTask"; 
      builder.SetTrigger(new TimeTrigger(15, false)); 

      // use builder.TaskEntryPoint if you want to not use the default OnBackgroundActivated 
      // we’ll register it and now will start work based on the trigger, here we used a Time Trigger 
      BackgroundTaskRegistration task = builder.Register(); 
     } 
    } 

答えて

2

ここでの問題は、あなたがMainPageクラスのOnBackgroundActivatedメソッドをオーバーライドしようとしているということです。 MainPageクラスはPage Classから派生しましたが、Application.OnBackgroundActivated methodPageクラスには存在しないApplication classのメソッドですので、no suitable method found to overrideというエラーがあります。この問題を解決するには

、我々は同じようAppクラスでOnBackgroundActivatedメソッドを配置する必要があります:単一プロセスのバックグラウンドタスクに関する詳細情報については

sealed partial class App : Application 
{ 
    /// <summary> 
    /// Override the Application.OnBackgroundActivated method to handle background activation in 
    /// the main process. This entry point is used when BackgroundTaskBuilder.TaskEntryPoint is 
    /// not set during background task registration. 
    /// </summary> 
    /// <param name="args"></param> 
    protected override void OnBackgroundActivated(BackgroundActivatedEventArgs args) 
    { 
     //TODO 
    } 
} 

Support your app with background tasksBackground activity with the Single Process Modelを参照してください。

+0

ありがとうございます。このように考えたことはありません。私はプログラミングにはとても新しいので、理解するのは少し難しいです。ありがとう! –