1

この方法で Web サイトから HTML コードを取得できます。

public void Test()
{
    WebClient client = new WebClient();
    client.DownloadStringCompleted += 
        new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
    client.DownloadStringAsync(new Uri("http://testUrl.xml"));
}

void client_DownloadStringCompleted(object sender, 
                                    DownloadStringCompletedEventArgs e)
{
    string html = e.Result;
    //Now do something with the string...
}

しかし、30 秒ごとに更新された html を取得する必要があるため、次のように記述しました。

public void TestMain()
{

    DispatcherTimer Timer = new DispatcherTimer()
    {
        Interval = TimeSpan.FromSeconds(30)
    };
    Timer.Tick += (s, t) =>
    {
        Test();
    };
    Timer.Start();
}

xml を変更しましたが、同じ html が表示されます。何が問題なのですか?

4

1 に答える 1

3

にキャッシュが含まれていWebClientます。同じ URI を 2 回要求すると、2 回目はコンテンツ全体がキャッシュから直接取得されます。

でキャッシュを無効にする方法はないWebClientため、次の 2 つの回避策があります。

  • HttpWebRequestの代わりに使用WebClient
  • URI にランダム パラメータを追加します。

    client.DownloadStringAsync(new Uri("http://testUrl.xml?nocache=" + Guid.NewGuid()));
    
于 2012-05-08T14:27:45.870 に答える