私はバックグラウンドでコードを実行しようとしています。これまではタスクを登録することができましたが、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
このRunメソッドを追加する必要はありません。非同期メソッドはすでにタスクを作成しています。あなたがキーワードを置くならば、あなたはただのリターンを待つだけです。返品を待つことを望まない場合は、 – OrcusZ
を削除してください。[this](https://msdn.microsoft.com/en-us/windows/uwp/launch-resume/create-and-register-a) -background-task)チュートリアルで、IBackgroundTaskを実装してRunメソッドを実装する必要があると言います。 – Nfear
私の側からのミス、私はbackgroundTaskを理解していないし、この変更は8.1以降、私はそれをしなかった。申し訳ありませんがあなたを助けることができません – OrcusZ