LockFile()
没有等待超时,LockFileEx()
也没有等待
如果我想等待超时的文件锁定,我该怎么办呢?
也就是说,我该如何实现以下内容:
DWORD LockFileTimed(HANDLE h,
DWORD milli,
__in DWORD dwFileOffsetLow,
__in DWORD dwFileOffsetHigh,
__in DWORD nNumberOfBytesToLockLow,
__in DWORD nNumberOfBytesToLockHigh)
答案 0 :(得分:0)
我理解你对LockFileTimed
的意图,因为当文件无法锁定时它不会立即返回,而是在给定时间内重试锁定文件。这样对吗?目前还不清楚这是否是你想要的。
一种简单的实现方法就是编写一个小循环来检查返回代码。
DWORD timer_end = GetTickCount() + milli;
while (GetTickCount() < timer_end) {
if (LockFile(...))
return TRUE;
else
Sleep(0); // Wait sometime.
}
return FALSE;