如何在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
}
}
所以,我的问题是:实现刷新功能的更好方法是什么?
这可能是缓存问题。也就是说,您正在获得缓存的响应。
尝试将无意义的随机值附加到查询字符串,以避免获得缓存的响应。例如:
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
}
}