【发布时间】:2017-02-02 15:04:09
【问题描述】:
为什么我要删除此文件时收到 IOException?确定是我解锁了?显然另一个进程仍在使用该文件,尽管没有以其他方式触摸它。
using (var lockFile = new FileStream(lockFilePath, FileMode.Open, FileAccess.ReadWrite, FileShare.None))
{
try
{
var productCount = downloadStuff();
}
catch (Exception e)
{
}
finally
{
lockFile.Unlock(0,lockFile.Length);
File.Delete(lockFilePath);
}
}
【问题讨论】:
-
尝试在不处于
Debug模式下运行它。 Visual Studio 调试器的宿主进程有一个可怕的习惯,即即使在您的代码放开它之后,它也会挂在文件锁上。 -
@user1895086 那么我该如何调试它!并且只是尝试在调试器之外运行应用程序的调试版本,结果相同。
-
您是否尝试在删除前关闭文件?
-
Unlock与Lock、Close(和Dispose)与new FileStream(和File.Open)配对。 -
Unlock()不会像您认为的那样做。你的using() { ... }块锁定了文件,你可以在外面删除它。
标签: c# file file-locking