2016-08-14 69 views
0

我在圖片框中遇到了這個問題,它必須從網頁加載圖片,問題是圖片在服務器上發生變化時,仍然會加載緩存副本。C#WinForms清除緩存中的http圖像

+0

@rene我不希望它自動更改,如果你想要,我有一個類別列表,每個類別都有一個按鈕,當你按下類別時,它會從服務器加載分配給該類別的圖像,你可以從這個應用程序手動更新圖像,而當你點擊一個類別的按鈕,你已經改變了它的照片它顯示舊照片,即使你重新啓動應用程序,它會獲取新的照片5分鐘左右後.... –

回答

1

PictureBox類使用WebClient實例從服務器加載圖像,如Microsoft始終有用的源參考資料中所示。

http://referencesource.microsoft.com/#System.Windows.Forms/winforms/Managed/System/WinForms/PictureBox.cs,d1a979fa214db76f

如果WebClient.CachePolicy屬性沒有明確設置(未在PictureBox.Load做),那麼WebRequest.DefaultCachePolicy使用。

所以根據您的應用程序就可以選擇這些方法之一:

  • 設置PictureBox.ImageLocation之前清除此URL緩存。這在How to clear the cache of HttpWebRequest
  • 解釋用自己的WebClient實例下載圖像與設定的CachePolicy和初始化從下載的內容流中的圖片框狀Load Picturebox Image From Memory?

  • 變化WebRequest.DefaultCachePolicy全球(作爲最後手段)例如

    WebRequest.DefaultCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);

希望這是有幫助的。

+0

謝謝你通過,從Internet Explorer清除緩存沒有清除它的PictureBox,所以我改變了DefaultCachePolicy,因爲圖像是應用程序中使用的唯一的http請求。謝謝。 –