我正在尝试注册一个后台任务,但我遇到了一些奇怪的行为。我似乎在正确的时间注册和触发任务本身;但是,当它触发时,它会关闭我的程序(没有错误)。
我怀疑原因与程序没有问我是否要在启动时允许后台任务运行这一事实有关。我已经为后台任务创建了一个声明作为系统事件,并从 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();