Functions.FFLock 方法 |
命名空间: XSharp.Core
提示: |
---|
X# 运行时中的低级文件 IO 函数在后台使用 .Net 文件流。 这意味着 FOpen() 和 FCreate() 返回的文件句柄不是'正常'的文件句柄,而是用于在运行时的流集合中找到底层流对象的唯一标识符。 这也意味着你不能使用 FRead() 和 FWrite() 这样的函数,这些函数不是在 X# 运行时中创建的文件句柄。 如果你想访问底层的 FileStream,你应该调用函数 FGetStream(IntPtr) |
1ptrHandle := FOpen2("c:\data\myfile.txt", ; 2 FO_READWRITE + FO_SHARED) 3IF FFLock(ptrHandle, 300, 100) 4 ? "锁定成功" 5ENDIF
1FUNCTION FileLock(ptrHandle AS PTR,; 2 dwOffset AS DWORD, dwLength AS DWORD,; 3 wSeconds AS DWORD) AS LOGIC PASCAL 4 LOCAL lForever AS LOGIC 5 IF FFLock(ptrHandle, dwOffset, dwLength) 6 RETURN TRUE // 已锁定 7 ENDIF 8 // 如果 wSeconds 为零,则重试直到成功 9 lForever := (wSeconds = 0) 10 DO WHILE (lForever .OR. wSeconds > 0) 11 IF FFLock(ptrHandle, dwOffset, dwLength) 12 RETURN TRUE // 已锁定 13 ENDIF 14 InKey(.5) // 等待 15 nSeconds -= 1 16 ENDDO 17 RETURN FALSE // 未锁定