UWP:页面渲染后在后台取数据,然后刷新UI

UWP: Fetch data in the background after page rendering and then refresh the UI

我是 UWP 的新手,正在尝试从 Internet 调用需要大约 5 秒才能加载的数据。然后数据将显示在网格中。我面临的问题是整个应用程序被阻塞,直到数据到达。 (逻辑存在于 Home.xaml 中,这是一个将在 MainPage.xaml 中的框架内呈现的页面)

到目前为止我添加了:

private void WeatherGrid_Loaded(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
    var weatherService = new WeatherService();
    var weather = weatherService.GetCurrentWeather(); // this takes around 5 seconds to be fetched
    this.TemperatureTextBlock.Text = weather.Main.Temp.ToString();
}

和我的 XAML 代码:

<Grid Loaded="WeatherGrid_Loaded">
        <TextBlock x:Name="TemperatureTextBlock"></TextBlock>
 </Grid>

我想要实现的是加载主页和主页并使其正常运行,并在线程中加载天气数据,当它们被获取时,值将显示在文本块内。如果发生中断(更改页面或刷新),该过程应停止 and/or 重新启动。老实说,我不知道如何开始使用它,因为我已经习惯了 Web 开发。有什么建议吗?

除非 GetCurrentWeatherasync 或有可用的 async 重载,否则您应该使用 Task.Run [=17= 在后台线程上调用它]:

private async void WeatherGrid_Loaded(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
    var weatherService = new WeatherService();
    var weather = await Task.Run(() => weatherService.GetCurrentWeather());
    this.TemperatureTextBlock.Text = weather.Main.Temp.ToString();
}