1

WebClientの新しいインスタンスを作成し、標準の手順に従ってWebClientがGCによって削除されるようにしますが、これは問題ではありません。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;
    }
4

1 に答える 1

1

WebClientのキャッシング戦略は非常に積極的です。毎回同じURLをクエリする場合は、最後にランダムなパラメーターを追加することを検討する必要があります。何かのようなもの:

"http://www.yourserver.com/yourService/?nocache=" + DateTime.UtcNow.Ticks
于 2013-03-26T13:31:44.567 に答える