2

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

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

4

3 回答 3

7

您需要使用LockFileEx

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

您正在寻找共享锁。

[DllImport("kernel32.dll")]
static extern bool LockFileEx(IntPtr hFile, uint dwFlags, uint dwReserved,
   uint nNumberOfBytesToLockLow, uint nNumberOfBytesToLockHigh,
   [In] ref System.Threading.NativeOverlapped lpOverlapped);
于 2012-09-18T13:47:03.143 回答
3

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

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

于 2012-09-18T13:46:50.273 回答
0

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

您可以使用 WinAPI 执行此操作。

查看在 C# 中使用 LockFileEX

于 2012-09-18T13:44:42.457 回答