db.MDF正在被另一个进程使用



现在代码如下所示:

private void DatabaseIntegrityCheck()
{
    try
    {
        string m_checksum;
        using (FileStream stream = File.OpenRead(@"C:~db.mdf"))
        {
            SHA256Managed sha = new SHA256Managed();
            byte[] checksum = sha.ComputeHash(stream);
            m_checksum = BitConverter.ToString(checksum).Replace("-", String.Empty);
        }
        Console.WriteLine(m_checksum);
    }
    catch (Exception ex)
    {
        Console.WriteLine("unable to retrieve checksum");
    }
}

当我在代码中设置一个断点来查看异常是什么时,我得到一个IOException,它说:

进程无法访问文件'db '。Mdf ',因为它正在被另一个进程使用。

我运行校验和的方式是在我的窗口中有一个按钮,当我点击它时,上面的方法被调用来执行操作。我想先检查一下它是否能工作,所以我选择Console。WriteLine校验和散列,但正在抛出上面的异常。

我能做些什么来解决这个问题?

尝试以下代码:

        try
        {
            string mChecksum;
            using (FileStream stream = File.OpenRead(@"E:draft.pdf"))
            {
                var sha = new SHA256Managed();
                var cs = new CryptoStream(stream, sha, CryptoStreamMode.Read);
                cs.FlushFinalBlock();
                byte[] hash = sha.Hash;
                mChecksum = BitConverter.ToString(hash).Replace("-", String.Empty);
            }
            Console.WriteLine(mChecksum);
        }
        catch (Exception ex)
        {
            Console.WriteLine("unable to retrieve checksum");
        }

查看有关CryptoStream的详细信息

相关内容

最新更新