【问题标题】:Read file without exclusive lock无排他锁读取文件
【发布时间】:2011-11-21 13:28:33
【问题描述】:

当同时请求尝试访问同一个图像文件时,读取图像的最佳方法是什么?

基本上我已经在 asp.net 中创建了 tiff 查看器。它显示所有 tiff 页面的缩略图,并在单击时加载下面的完整图像。但是当我尝试读取大 tiff 文件(40+ MB)时,会显示一些缩略图,并且会出现一些拒绝访问错误。我希望我足够清楚地解释这个问题。

【问题讨论】:

    标签: asp.net file-io locking tiff viewer


    【解决方案1】:

    您应该以这种方式打开 Stream:

    using (Stream s = new FileStream(fullFilePath, 
                                     FileMode.Open,
                                     FileAccess.Read,
                                     FileShare.ReadWrite))
    {
      // here use the stream s
    }
    

    通过这种方式,您打开以供读取,而其他进程也将能够读取该文件,并且只有一个进程,而不是您的进程,最终可以获得写入权限。

    也可以在这里查看:How do I open an already opened file with a .net StreamReader?

    【讨论】:

    • 好吧,我只想读取文件。我不应该使用 FileShare.Read 而不是 FileShare.ReadWrite 吗?顺便说一句,我认为 FileStream 先将整个文件加载到内存中,然后再执行操作,不是吗?有没有办法通过只读权限提高效率?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    • 1970-01-01
    • 2022-08-02
    • 1970-01-01
    • 1970-01-01
    • 2015-06-02
    • 2018-04-19
    相关资源
    最近更新 更多