我需要从文件处于锁定状态的错误情况中恢复。我如何在 c# 中告诉这个文件重置它的锁?我需要添加到这个文件是由第 3 方 dll 打开的,我实际上无权访问文件句柄。
问问题
2532 次
4 回答
5
锁定文件是操作系统(代表打开它的程序)的责任。如果文件处于锁定状态,则完全取决于操作系统来解锁。这通常在打开文件的进程退出时自动发生。
但是,我遇到了一个非常酷的实用程序,它会有所帮助。它被称为解锁器。
于 2008-10-23T02:24:52.943 回答
1
我真的会考虑寻找另一个 3rd 方 dll。任何处理 Streams 的系统都应该正确响应错误条件,而不是保留文件锁定之类的东西。
该库是否有可能提供错误条件清理,您刚刚看过它?尝试类似以下的方法,
try {
thirdPartyObj = new ThirdPartObj();
// Some possible error causing object actions
catch(Exception ex) {
thirdPartyObj = null; // The object should close its resources
}
于 2008-10-23T02:32:47.170 回答
1
您也许可以使用以下内容启动命令行进程,例如 net 或 psfile:
System.Diagnostics.Process.Start("psfile c:\myfile.txt -c");
您可以在此处获取 psfile 。
你也可以使用
net file ID /close
但这需要您知道文件 ID,这需要更多的工作。
未经测试,但这应该给你一个起点。
于 2008-10-23T02:53:22.823 回答
0
您必须使用 .Close() 关闭文件。您需要确保您仍然可以访问文件对象。
您通常可以通过在执行文件 I/O 的代码之后编写 try{} ... finally {} 构造来避免此错误。在 finally {} 块中,您将调用文件对象的 Close 方法,以防止出现这种情况。您还可以在创建文件时使用 using {} 块,这也可以解决此问题。
于 2008-10-23T02:10:32.877 回答