我已经使用Application触发器在UWP中为后台任务创建了一个应用程序。当我使用按钮手动触发事件时,它正在工作。
我想使用Application触发器在App最小化中调用后台任务事件。有可能吗?
我使用以下代码通过按钮点击触发后台任务:
public MainPage()
{
this.InitializeComponent();
this.Button_Click();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
var taskRegistered = false;
var exampleTaskName = "ExampleBackgroundtask";
foreach (var task in BackgroundTaskRegistration.AllTasks)
{
if (task.Value.Name == exampleTaskName)
{
taskRegistered = true;
break;
}
}
if (!taskRegistered)
{
var builder = new BackgroundTaskBuilder();
builder.Name = exampleTaskName;
builder.TaskEntryPoint = "Background.ExampleBackgroundtask";
builder.SetTrigger(new SystemTrigger(SystemTriggerType.TimeZoneChange, false));
BackgroundTaskRegistration task = builder.Register();
task.Completed += new BackgroundTaskCompletedEventHandler(OnCompleted);
}
}
答案 0 :(得分:0)
由于某种原因,您的代码使用SystemTrigger
进行时区更改,但我认为这只是一次意外的复制粘贴错误。
当应用最小化时,将在当前VisibilityChanged
上调用Window
事件。您可以为此事件注册处理程序并在那里开始后台任务:
Window.Current.VisibilityChanged += (sender, e) =>
{
if (!e.Visible)
{
//minimized, register background task
}
};