刪除 .NET 中被其他進程鎖定的檔案
刪除另一個進程目前正在使用的檔案是 .NET 開發的常見挑戰。 一個典型的例子涉及將圖像從磁碟載入到記憶體中的應用程式;隨後刪除這些檔案可能會很困難。
這個問題最近在開發者查詢中突出顯示。 即使在刪除 UI 元素並將圖像引用設為 null
後,開發人員仍嘗試刪除其應用程式使用的檔案。 儘管執行了這些步驟,IOException
錯誤仍然存在,表明檔案仍處於鎖定狀態。
解鎖檔案
根本原因往往在於垃圾收集。 在 .NET 中,未引用的物件將被垃圾收集器刪除,但這不是即時的。 即使從記憶體中刪除了相應的圖像對象,這種延遲也會導致文件句柄打開。
解決方案涉及手動啟動垃圾收集並等待掛起的終結器完成。 以下程式碼片段說明了這一點:
<code class="language-csharp">System.GC.Collect(); System.GC.WaitForPendingFinalizers(); File.Delete(picturePath);</code>
呼叫 GC.Collect()
和 GC.WaitForPendingFinalizers()
強制立即進行垃圾回收,釋放對影像物件的所有殘留引用並成功刪除檔案。
以上是如何刪除 .NET 中被另一個進程鎖定的檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!