我正在通過同時調用ReadDirectoryChangesW
來看一個目錄。當有新文件可用時,我嘗試使用CreateFile
與GENERIC_READ
和FILE_SHARE_READ
立即訪問它,但這會給我ERROR_SHARING_VIOLATION
。將文件放入監視目錄的過程在我嘗試讀取文件時並未完成寫入。等待一個文件可用於與Win32一起閱讀
是否有任何方法可靠地等待文件可供閱讀?我可以將該方法放入下面的循環中,但我希望有更好的方法。
while ((hFile = CreateFile (path, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL)) == INVALID_HANDLE_VALUE)
{
if (GetLastError() == ERROR_SHARING_VIOLATION)
Sleep (500);
else
break; // some other error occurred
}
if (hFile == INVALID_HANDLE_VALUE)
{
// deal with other error
return 0;
}
ReadFile (...);
我認爲這是C++?如果它是C#,則可以使用BCL中的SystemFileWatcher對象。 – 2009-11-17 05:27:50
Win32 == C API,我會重播。 – dreamlax 2009-11-17 05:31:35