Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.02;
Скачать: CL | DM;

Вниз

Завершение потока   Найти похожие ветки 

 
em240 ©   (2007-09-12 13:52) [0]

while not Terminated do
 begin
repeat
if  ReadDirectoryChangesW(hDir, Buf, BufSize, SubDirs, //становится и не идёт дальше
 FILE_NOTIFY_CHANGE_SIZE,@Returned, nil, nil) then
 begin
 Synchronize(Main.Proc);
 end;
until False;
FreeMem(Buf);
end;
CloseHandle(hDir);
 
 Synchronize(Stop);
как можно завершить данный поток?


 
tesseract ©   (2007-09-12 14:04) [1]


> как можно завершить данный поток?


Делай с overlapped +GetOverlappedResult + CancelIO.


 
Сергей М. ©   (2007-09-12 14:04) [2]


> как можно завершить данный поток?


Не уверен, но возможно ф-ция вернет управление (с соотв. ошибкой), если закрыть хэндл hDir в контексте другого потока. Проверь сам.

Если не возвращает управление, то выход только один - использование асинхронного режима работы ф-ции (см. справку).


 
evvcom ©   (2007-09-12 15:39) [3]

Поток должен через Terminate корректно завершаться, если нет, ищи ошибки у себя. Я уже несколько вижу прям ща:
1. У тебя нет условия выхода из repeat
2. И если бы оно было, то у тебя внутри беконечного while (не считая Terminate) есть освобождение Buf без предварительного выделения. Что ты будешь освобождать на втором проходе? На третьем?


 
em240 ©   (2007-09-12 16:47) [4]

Buf выделяется в функции синхронизации :)


 
Kolan ©   (2007-09-12 17:02) [5]

Потоку надо послать сообщение «Закрывайся», аон должен будет прервать цикл repeat until False;


 
Сергей М. ©   (2007-09-12 17:03) [6]


> em240 ©   (12.09.07 16:47) [4]
>
> Buf выделяется в функции синхронизации :)
>


Ай малацца) .. Наш человек ! (С)
Сначала обратился к несуществующему буферу, и только потом его "выделил")
Так держать !


 
evvcom ©   (2007-09-12 17:16) [7]

Да... крута! :-)


 
Сергей М. ©   (2007-09-12 17:19) [8]


> evvcom ©   (12.09.07 17:16) [7]


Бывает и круче)

Но Автор при это еще и хихикает, как бы демонстрируя непокобелимую уверенность в своих действиях - вот что умиляет)


 
tesseract ©   (2007-09-12 17:58) [9]


> evvcom ©   (12.09.07 15:39) [3]


Да функция у него синхронная - пока в папку чего не запишешь она не вернёться. Да и из repeat не выйдет (можно подумать terminated мало), и ошибку во freemem получит. Хакер короче.


 
Суслик ©   (2007-09-14 00:09) [10]

ну и охота вам?!
копать решение можно имея только первый ответ, имхо, конечна.



Страницы: 1 вся ветка

Текущий архив: 2007.12.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.026 c
1-1189687888
Андрей Пл
2007-09-13 16:51
2007.12.02
TDBChart есть ли у компонента метод наподобие Print Preview?


15-1193680169
SQL555
2007-10-29 20:49
2007.12.02
Проблема с процедурой SQL


10-1139575478
Shopot
2006-02-10 15:44
2007.12.02
Как в Excel задать ширину столбца?


2-1194434383
dumka
2007-11-07 14:19
2007.12.02
Поиск


2-1194629978
IOrist
2007-11-09 20:39
2007.12.02
Как прогу убрать в фоновый режим