2016-04-12 16 views
0

私はバックグラウンドでコードを実行しようとしています。これまではタスクを登録することができましたが、Runメソッドは決して実行されません。これは私がこれまで持っているものです。DependencyService経由でUWPでバックグラウンドタスクを開始する

BackgroundUWP:

[assembly: Xamarin.Forms.Dependency(typeof(App.UWP.BackgroundUWP))] 
namespace App.UWP 
{ 
    class BackgroundUWP : IBackground 
    { 
     public async void RegisterAndStartTask() 
     { 
      string taskName = typeof(MyTask).Name; 

      foreach (var task in BackgroundTaskRegistration.AllTasks) 
      { 
       if (task.Value.Name == taskName) 
       { 
        task.Value.Unregister(true); 
        break; 
       } 
      } 

      BackgroundTaskBuilder builder = new BackgroundTaskBuilder(); 
      ApplicationTrigger trigger = new ApplicationTrigger(); 
      builder.Name = taskName; 
      builder.TaskEntryPoint = typeof(MyTask).FullName; 
      builder.SetTrigger(trigger); 
      BackgroundTaskRegistration t = builder.Register(); 

      await trigger.RequestAsync(); 
     } 
    } 
} 

MyTaskに:

namespace App.UWP 
{ 
    public sealed class MyTask : IBackgroundTask 
    { 
     public void Run(IBackgroundTaskInstance taskInstance) 
     { 
      // this method isn't being called 
     } 
    } 
} 

マニフェスト:私はブレークポイントを設定するとき

<Extension Category="windows.backgroundTasks" EntryPoint="App.UWP.MyTask"> 
    <BackgroundTasks> 
    <Task Type="systemEvent" /> 
    </BackgroundTasks> 
</Extension> 

私のアプリがawait trigger.RequestAsync();に達します。コンソールで私はこのメッセージに気づいたbackgroundTaskHost.exe has exited with code 1。これを修正するにはどうすればよいですか?

EDIT:

thisの質問に関連するかもしれません。私はIBackgroundTaskを実装したクラスを使用して新しいWindowsランタイムコンポーネント(ユニバーサル・Windowsの場合)プロジェクトを作成して追加する必要がありました

  • のApp(PCL)
  • App.UWP
+0

このRunメソッドを追加する必要はありません。非同期メソッドはすでにタスクを作成しています。あなたがキーワードを置くならば、あなたはただのリターンを待つだけです。返品を待つことを望まない場合は、 – OrcusZ

+1

を削除してください。[this](https://msdn.microsoft.com/en-us/windows/uwp/launch-resume/create-and-register-a) -background-task)チュートリアルで、IBackgroundTaskを実装してRunメソッドを実装する必要があると言います。 – Nfear

+0

私の側からのミス、私はbackgroundTaskを理解していないし、この変更は8.1以降、私はそれをしなかった。申し訳ありませんがあなたを助けることができません – OrcusZ

答えて

0

:私のプロジェクトでは、このようになりますUWPプロジェクトへの参照。

問題は、App.UWPプロジェクトにWindowsランタイムコンポーネントプロジェクトではないクラスがあることでした。

関連する問題