我需要从文件处于锁定状态的错误情况中恢复。我怎样才能在c#中告诉这个文件重置它的锁?我需要添加到这个文件由第三方DLL打开,我实际上没有访问文件句柄。
答案 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 {}块,这也将解决此问题。