![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Есть процедура в отдельном потоке
Код:
Procedure DoNothing; begin while true do; end; Я хочу её убить TerminateThread Как не странно, но она не убивается этой функцией. В описании написано, что Windows NT: The handle must have THREAD_TERMINATE access. For more information, see Thread Objects. Но ни в помощи, ни в гугле нет ни единого примера. Может кто подсказать ? Последний раз редактировалось M.A.D.M.A.N., 26.08.2013 в 21:17. |
#2
|
||||
|
||||
![]() Ваш код покажите, пожалуйста.
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#3
|
||||
|
||||
![]() а еще в писании сказано:
Цитата:
Пишу программы за еду. __________________ |
#4
|
|||
|
|||
![]() Поток создаёт WinAPI
CreateThread(nil,0,@DoNothing,nil,0,ConnectThreadI D); И такой константы THREAD_TERMINATE нет. |
#5
|
||||
|
||||
![]() это не константа:
Цитата:
Пишу программы за еду. __________________ |
#6
|
|||
|
|||
![]() Всё, разобрался. Моя ошибка.
SysErrorMessage = Неверный дескриптор. Надо было делать так: Код:
Hndle:= CreateThread(nil,0,@DoNothing,nil,0,ThreadHandle); TerminateThread(Hndle,0); Просто в описании ф-ции CreateThread написано, что LPDWORD lpThreadId // pointer to returned thread identifier И то, что дескриптор должен обладать признаком THREAD_TERMINATE Вообщем, тогда я не понимаю что это всё значит. Ну и пару встречных вопросов: 1. А как можно правильно завершить поток выполняющий while true do; ? 2. Можно как нибудь избавиться от утечки ресурсов в бесклассовом треде завершённым таким образом(через ThreadTerminate) ? Последний раз редактировалось M.A.D.M.A.N., 26.08.2013 в 21:21. |