WebClient和任务没有检索新内容但新内容可用吗?

时间:2013-03-26 02:37:42

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

即使我正在创建WebClient的新实例,并遵循标准过程以确保GC移除WebClient,这甚至不应该重要:webclient从我之前检索到的服务器中检索内容,并且仅重新启动应用程序将允许检索我的服务器中的新内容。内容是一个简单的文本文件字符串,没有花哨的缓存,因为它适用于WinRT就好了。

这是一个谜,因为我正在尝试制作一个ChatBox;我需要刷新才能获得新内容,但WebClient会返回它第一次检索的内容。

我的代码:

    public async Task<string> RetrieveDocURL(Uri uri)
    {

        return await DownloadStringTask(new WebClient(), uri);
    }

    /*
    public async Task<byte[]> RetrieveImageURL(string url)
    {
        return await _webClient.GetByteArrayAsync(url);
    }
     * */

    private Task<string> DownloadStringTask(WebClient client, Uri uri)
    {
        var tcs = new TaskCompletionSource<string>();

        client.DownloadStringCompleted += (o, e) =>
            {
                if (e.Error != null)
                    tcs.SetException(e.Error);
                else
                    tcs.SetResult(e.Result);
            };

        client.DownloadStringAsync(uri);

        return tcs.Task;
    }

1 个答案:

答案 0 :(得分:2)

WebClient的缓存策略非常具有攻击性。如果您每次都查询相同的URL,则应考虑在最后添加随机参数。类似的东西:

"http://www.yourserver.com/yourService/?nocache=" + DateTime.UtcNow.Ticks