2010-06-24 34 views
1

我上傳圖像文件在我的MVC網絡應用程序。每當我上傳任何選定的圖片時,我都想在我的網站上將其顯示爲徽標。爲此,我需要清除瀏覽器緩存。以下是我用於清除緩存的一組函數。如何在不刪除正在使用的文件的情況下清除IE緩存?

void clearIECache() 
    { 
     ClearFolder(new DirectoryInfo(Environment.GetFolderPath 
     (Environment.SpecialFolder.InternetCache))); 
    } 

    void ClearFolder(DirectoryInfo folder) 
    { 
     foreach (FileInfo file in folder.GetFiles()) 
     { file.Delete(); } 
     foreach (DirectoryInfo subfolder in folder.GetDirectories()) 
     { ClearFolder(subfolder); } 
    } 

上述代碼的問題在於,只要它試圖刪除任何正在使用的文件,它就會中斷。我想跳過這些文件,以確保它能順利運行。有什麼辦法可以做到這一點?

+0

這是你的地方應用程序還是遠程用戶?你打算如何讓代碼在遠程用戶的機器上執行? – 2010-06-24 18:22:00

回答

2

使用Try/Catch捕獲錯誤,並忽略它們:

foreach (FileInfo file in folder.GetFiles()) 
    { 
     try 
     { 
      file.Delete(); 
     } 
     catch (Exception) 
     { 
      // Swallow "File in use" errors. 
     } 
    } 
+2

如果你這樣做,確保你總是在空的catch塊中包含註釋,向程序員解釋爲什麼空的catch塊在那裏。 – 2010-06-24 18:18:57

0

可能使用使用jQuery這行代碼來糾正瀏覽器腳本做緩存:

$.ajaxSetup({ cache: false }); 
+1

這個問題是關於C#的。在C#中沒有jQuery – 2011-11-16 14:22:52

相關問題