将事件从后台任务发送到UI

时间:2016-09-16 03:00:44

标签: win-universal-app background-task

我在Windows Phone 10中实现了一个应用程序。

在我的后台任务中,当应用程序正在处理某些作业时,它希望调用主项目并实时更新UI。

是否有任何机制可以将事件从后台任务发送到主项目以更新UI?

2 个答案:

答案 0 :(得分:0)

         //backTask
            await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
            () =>
            {
                //update ui
                UIAction.?Invoke();
            });

答案 1 :(得分:0)

  

是否有任何机制可以将事件从后台任务发送到主项目以更新UI?

您可以注册后台任务的Completed事件并更新Completed事件中的用户界面:

注册完整的活动:

var registration= taskBuilder.Register();
registration.Completed += Registration_Completed;

private async void Registration_Completed(BackgroundTaskRegistration sender, BackgroundTaskCompletedEventArgs args)
{
    var settings = ApplicationData.Current.LocalSettings;
    await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
    {
        tbResult.Text=settings.Values["BackgroundResult"].ToString();
    });
}

的Xaml:

<StackPanel VerticalAlignment="Center">
        <Button Name="btnRegister" Click="btnRegister_Click">
            Click Me to register BT
        </Button>
        <TextBlock Name="tbResult">
            Here will show the result
        </TextBlock>
</StackPanel>

这是完整的演示:BackgroundTaskSample