WinRTでバックグラウンドタスクを登録する
-
21-12-2019 - |
質問
背景タスクを登録しようとしています。タスク自体が適切なタイミングで登録して発射しているようです。ただし、発射すると、プログラムを閉じます(エラーなし)。
私は、その理由が私に尋ねていないという事実にリンクされていると思われることは、私が起動したときにバックグラウンドタスクを実行できるようにしたいのです。私はバックグラウンドタスクの宣言をシステムイベントとして作成し、app.xaml.csからこのように登録しています:
var builder = new BackgroundTaskBuilder();
builder.Name = "NewTask";
builder.TaskEntryPoint = "ConnectionMonitor.CheckInternet";
builder.SetTrigger(new SystemTrigger(SystemTriggerType.InternetAvailable, false));
BackgroundTaskRegistration task = builder.Register();
.
だから、私は私の質問が信じています。
それが重要かどうかわからないが、これはWindows Universal Appです(上記のapp.xaml.csはShared
プロジェクトにあります。
タスクは次のようになります。
BackgroundTaskDeferral _deferral = taskInstance.GetDeferral();
bool newConnected = IsConnected();
if (connected != newConnected)
{
connected = newConnected;
var notifier = ToastNotificationManager.CreateToastNotifier();
var template = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText02);
var element = template.GetElementsByTagName("text")[0];
element.AppendChild(template.CreateTextNode(connected ? "Connection available" : "Connection lost"));
var toast = new ToastNotification(template);
notifier.Show(toast);
}
_deferral.Complete();
. 解決
尋ねた:背景タスクを実行する許可を求めないのはなぜですか?
答えは、バックグラウンドタスクにロック画面のアクセスが必要な場合を除き、ユーザーの許可を登録する必要はありません。デザインでユーザープロンプトはありません。この設計の目的の1つは、他のタスクからタスクを登録できることです。
Windowsでは、ロック画面アクセスを除いてBackgroundExecutionManager.RequestAccessAsync()
を呼び出す必要はありません。それを呼び出すと、より多くのクォータが与えられますが、ユーザーがタスクを承認する必要があります。
Windows Phoneでは、何が発生しても呼び出しを行う必要はありませんが、UIを使用してユーザーに求められません。このため、ユニバーサルアプリのロジックは共有できますが、関連性がある場合は登録を説明するためのRequestAccessAsync()
がある可能性があります。