删除 .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中文网其他相关文章!