【问题标题】:Lock a block of a file锁定文件块
【发布时间】:2012-09-18 13:43:12
【问题描述】:

我有一个 192k 大小的文件,我想锁定文件的中间。

Ex) 我想用 c# 锁定 64k-128k 的文件。知道如何锁定文件的那部分吗?

【问题讨论】:

  • 这被称为“字节范围锁定”,非常有价值。

标签: c# .net


【解决方案1】:

您需要使用LockFileEx

锁定指定文件以供调用进程独占访问。该函数可以同步或异步操作,可以请求排他锁或共享锁。

您正在寻找共享锁。

[DllImport("kernel32.dll")]
static extern bool LockFileEx(IntPtr hFile, uint dwFlags, uint dwReserved,
   uint nNumberOfBytesToLockLow, uint nNumberOfBytesToLockHigh,
   [In] ref System.Threading.NativeOverlapped lpOverlapped);

【讨论】:

    【解决方案2】:

    您可能想查看 Windows API 中的 LockFile 函数。同一页面还提到了LockFileEx 函数。耶!玩得很开心;)

    pinvoke 网站上有一个页面:http://www.pinvoke.net/default.aspx/kernel32.lockfile

    【讨论】:

      【解决方案3】:

      您不能使用System.IO 锁定文件的某些部分。如果您对文件有一个打开的句柄,则整个文件被锁定。

      您可以使用 WinAPI 做到这一点。

      查看Using LockFileEX in C#

      【讨论】:

        猜你喜欢
        • 2021-03-29
        • 2013-12-21
        • 2015-04-14
        • 1970-01-01
        • 1970-01-01
        • 2018-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多