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

时间:2013-09-18 01:22:35

标签: c# windows-phone-7 windows-phone-8 windows-phone

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

基本上,应用程序所做的是使用一些RSS源并将其显示在手机中。手机有4个部分:开始,搜索,新闻,收藏。

我遇到的问题是在新闻部分。正如评论我消耗了一些RSS。当我点击刷新按钮时,我所做的就是再次执行当App star显示新闻时加载的相同方法。但是,即使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
    }
}

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

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:2)

@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
    }
}