LockFile有超时吗?

时间:2011-07-24 19:13:19

标签: winapi

LockFile()没有等待超时,LockFileEx()也没有等待 如果我想等待超时的文件锁定,我该怎么办呢?

也就是说,我该如何实现以下内容:

DWORD LockFileTimed(HANDLE h,  
    DWORD milli,  
    __in  DWORD dwFileOffsetLow,  
    __in  DWORD dwFileOffsetHigh,  
    __in  DWORD nNumberOfBytesToLockLow,  
    __in  DWORD nNumberOfBytesToLockHigh)  

1 个答案:

答案 0 :(得分:0)

我理解你对LockFileTimed的意图,因为当文件无法锁定时它不会立即返回,而是在给定时间内重试锁定文件。这样对吗?目前还不清楚这是否是你想要的。

一种简单的实现方法就是编写一个小循环来检查返回代码。

DWORD timer_end = GetTickCount() + milli;
while (GetTickCount() < timer_end) {
  if (LockFile(...))
    return TRUE;
  else
    Sleep(0); // Wait sometime.
}
return FALSE;