バックグラウンド タスクを登録しようとしていますが、奇妙な動作が発生しています。タスク自体が適切なタイミングで登録および起動されているようです。ただし、起動すると、プログラムが閉じられます(エラーなし)。
その理由は、プログラムが起動時にバックグラウンド タスクの実行を許可することを求めていないという事実に関連していると思われます。バックグラウンド タスクの宣言をシステム イベントとして作成し、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 ユニバーサル アプリです (上記の 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();