Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 FindFirstChangeNotification и ко  [new]
wooly
Guest
Всем привет!
Написал небольшую функцию для отслеживания записи в файлы в папках и столкнулся с такой непоняткой:
WaitForSingleObject возвращает WAIT_OBJECT_0 2 раза, даже если был изменен 1 файл. Если записать что-нибудь в 2 файла,
соответственно, будет возвращено 4 WAIT_OBJECT_0 и только потом WAIT_TIMEOUT. Почему?

p.s так-то оно мне не критично, но чисто из любопыства...

Вот тестовый пример. В папке d:\test лежат 2 текстовых файла: file1.txt и file2.txt.

procedure TForm1.Button1Click(Sender: TObject);
var
  hChangeHandle: THandle;
  dwWaitStatus: DWORD;
begin
  hChangeHandle := FindFirstChangeNotification(PChar('d:\test'), True, FILE_NOTIFY_CHANGE_LAST_WRITE);
  if hChangeHandle <> INVALID_HANDLE_VALUE then
  begin
    repeat
      dwWaitStatus := WaitForSingleObject(hChangeHandle, 7000);
      if dwWaitStatus = WAIT_OBJECT_0 then
        Memo1.Lines.Add('WAIT_OBJECT_0')
      else if dwWaitStatus = WAIT_TIMEOUT then
        Memo1.Lines.Add('WAIT_TIMEOUT')
    until (dwWaitStatus = WAIT_TIMEOUT) or not FindNextChangeNotification(hChangeHandle);
    FindCloseChangeNotification(hChangeHandle);
  end else
    Form1.Memo1.Lines.Add('FindFirstChangeNotification failed');
end;
11 май 18, 10:00    [21402167]     Ответить | Цитировать Сообщить модератору
 Re: FindFirstChangeNotification и ко  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 23699
Посмотри, что там происходит https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa365465(v=vs.85).aspx
11 май 18, 10:22    [21402241]     Ответить | Цитировать Сообщить модератору
 Re: FindFirstChangeNotification и ко  [new]
kloun02
Member

Откуда:
Сообщений: 7458
wooly,

Пишешь в файл то небось каким нибудь нотепадом++ ? :)
11 май 18, 10:51    [21402327]     Ответить | Цитировать Сообщить модератору
 Re: FindFirstChangeNotification и ко  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 2872
wooly,
3 их может приходить
1-й это изменение файла, [2-й изменение атрибутов файла,] 3-й изменение атрибутов директории
11 май 18, 12:26    [21402683]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить