尽管解锁,文件仍保持锁定状态

时间:2017-02-02 15:04:10

标签: c# file file-locking

为什么我在删除此文件时收到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);
    }

}

1 个答案:

答案 0 :(得分:3)

我相信当您拨打File.Delete时,文件仍处于打开状态会导致您的问题 尝试将File.Delete调用移出using块:

using (var lockFile = new FileStream(lockFilePath, ...))
{
    ...
}
File.Delete(lockFilePath);

或者只需在lockFile.Close之前致电File.Delete

finally
{
    lockFile.Close();
    File.Delete(lockFilePath);
}