DownloadStringAsync在多次调用时返回相同的字符串

时间:2014-01-25 17:36:26

标签: c# windows-phone-7

我想为Windows Phone 7.5开发一个收音机应用程序。我创建了一个webclient,它从远程服务器下载一个字符串,其中包含歌曲的标题和其他信息。然后将字符串传递给文本块。一切似乎都运转良好,但有一点问题。包含该字符串的远程文件经常更新。所以我想保持我的文本块更新。我做了一个计时器,每5秒下载一次字符串,逻辑上它应该更新文本块。问题是尽管远程文件正在更新,它仍会继续下载相同的字符串。为什么呢?

DownloadTitle.cs:

class DonwloadTitle
{
  public string ResultText { get; set; }
  public void DownloadStringTitle()
  {
    BackgroundWorker worker = new BackgroundWorker();
    worker.WorkerReportsProgress=true;
    worker.WorkerSupportsCancellation=true;
    worker.RunWorkerAsync();
    worker.DoWork+=worker_DoWork;
  }

  void worker_DoWork(object sender, DoWorkEventArgs e)
  {
    WebClient HitClient = new WebClient();
    HitClient.Encoding = System.Text.Encoding.UTF8;
    HitClient.DownloadStringCompleted += HitClient_DownloadStringCompleted;
    HitClient.DownloadStringAsync(new Uri("http://air-online2.hitfm.md/status_hitfm.xsl"));
  }

  void HitClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
  {
    ResultText = e.Result.Substring(167);
  }
}

我在C#中为Windows桌面尝试了这个算法并且它有效。但对于Windows手机没有。

1 个答案:

答案 0 :(得分:0)

尝试设置缓存策略:

   RequestCachePolicy policy = new  RequestCachePolicy( RequestCacheLevel.NoCacheNoStore);
   HitClient.CachePolicy = policy;