删除文件锁

时间:2008-10-23 02:07:43

标签: c# file-io locking

我需要从文件处于锁定状态的错误情况中恢复。我怎样才能在c#中告诉这个文件重置它的锁?我需要添加到这个文件由第三方DLL打开,我实际上没有访问文件句柄。

4 个答案:

答案 0 :(得分:5)

锁定文件是操作系统(代表打开它的程序)的责任。如果一个文件处于锁定状态,它真的由操作系统解锁。这通常在打开文件的进程退出时自动发生。

然而,我遇到的一个非常酷的实用程序会有所帮助。它被称为Unlocker

答案 1 :(得分:1)

我真的会考虑寻找另一个第三方dll。处理Streams的任何系统都应该正确响应错误条件,而不是保留文件锁等。

库是否有可能提供错误条件清理,你刚看过它?尝试以下内容,

 try {
   thirdPartyObj = new ThirdPartObj();
   // Some possible error causing object actions
 catch(Exception ex) {
   thirdPartyObj = null; // The object should close its resources
 }

答案 2 :(得分:1)

你可以使用以下内容开始一个命令行进程,比如net或psfile:

System.Diagnostics.Process.Start("psfile c:\myfile.txt -c");

你可以获得psfile here

您也可以使用

net file ID /close

但这需要你知道文件ID,这需要更多的工作。

未经测试,但这应该给你一个起点。

答案 3 :(得分:0)

您必须使用.Close()关闭文件。您需要确保仍然可以访问文件对象。

通常可以在执行文件I / O的代码之后编写try {} ... finally {}构造来避免此错误。在finally {}块中,您将调用文件对象的Close方法,以防止出现这种情况。您还可以在创建文件时使用using {}块,这也将解决此问题。