如何在WP 8中正确实现刷新功能

本文关键字:实现 刷新 新功能 WP | 更新日期: 2023-09-27 18:31:54

我最近发布了一个关于回收东西的WP8应用程序。我继续用新功能支持它,并修复或改进现有功能。

基本上,该应用程序的作用是消耗一些RSS提要并将其显示在手机中。手机有4个部分:开始,搜索,新闻,收藏夹。

我遇到的问题出在新闻部分。正如评论的那样,我消耗了一些 RSS。当我单击刷新按钮时,我所做的是再次执行相同的方法,当应用程序星号显示新闻时加载。但是,即使 RSS 提要有新的数据,我也会收到相同的数据。有时需要一段时间才能看到新数据。

我正在执行一个异步方法来获取 RSS 提要并使用 HttpClient。该方法如下所示:

public async Task<ObservableCollection<News>> GetNews()
{
    try
    {
        HttpClient client = new HttpClient();
        var result = await client.GetStringAsync(source);
        var parseResult = XDocument.Parse(result);
        . . .
    }
    catch(Exception ex)
    {
       //throw
    }
}

所以,我的问题是:实现刷新功能的更好方法是什么?

如何在WP 8中正确实现刷新功能

这可能是缓存问题。也就是说,您正在获得缓存的响应。

尝试将无意义的随机值附加到查询字符串,以避免获得缓存的响应。例如:

HttpClient client = new HttpClient();
var result = await client.GetStringAsync(source + "?nocahce=" + Guid.NewGuid());
var parseResult = XDocument.Parse(result);

@anderZubi解释的内容很精确,我也被这个问题困了很长时间,但有更优雅的方式来处理这个问题尝试将 DefaultRequestHeaders 属性添加到 HttpClient 下面是代码

public async Task<ObservableCollection<News>> GetNews()
{
    try
    {
        HttpClient client = new HttpClient();
        client.DefaultRequestHeaders.Add("Cache-Control", "no-cache");
        var result = await client.GetStringAsync(source);
        var parseResult = XDocument.Parse(result);
        . . .
    }
    catch(Exception ex)
    {
       //throw
    }
}