Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2007.12.02;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.042 c
15-1194287167
Kostafey
2007-11-05 21:26
2007.12.02
Систематизация мозгов в рамках Apache-пректов


2-1194412928
DevilDevil
2007-11-07 08:22
2007.12.02
Как правильно блокировать/разблокировать поток?


15-1194117044
vasIZmax
2007-11-03 22:10
2007.12.02
Диплом не за горами (посоветуйте и только)


2-1194597655
allucard
2007-11-09 11:40
2007.12.02
Работа с массивом через указатели


15-1194098631
Vendict
2007-11-03 17:03
2007.12.02
h -> pas





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский