Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.09.2009, 10:58   #1
AquaKlaster
Delphi,Python,PHP
Форумчанин
 
Аватар для AquaKlaster
 
Регистрация: 04.04.2009
Сообщений: 138
По умолчанию Из за чего пишет неверный дескриптор

Из за чего пишет неверный дескриптор когда я останавливаю поток
останавливаю так:
PHP код:
  // прервать поток
  
FlooderThread.Suspend;
  
// уничтожить поток
  
FlooderThread.Terminate
создаю так:
PHP код:
// создать поток
  
FlooderThread := TFlooderThread.Create(false);
  
// назначить приоритет потоку - нормальный
  
FlooderThread.Priority := tpNormal;
  
// при уничтожении освободить поток из памяти
  
FlooderThread.FreeOnTerminate := True
из за чего эта ошибка пишется?
AquaKlaster вне форума Ответить с цитированием
Старый 12.09.2009, 11:10   #2
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

и на что указывает?
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 12.09.2009, 11:15   #3
AquaKlaster
Delphi,Python,PHP
Форумчанин
 
Аватар для AquaKlaster
 
Регистрация: 04.04.2009
Сообщений: 138
По умолчанию

Цитата:
Сообщение от russian-stalker Посмотреть сообщение
и на что указывает?
ни на что
прога компилится и пашет но при остановке потока пишет неверный дескриптор
AquaKlaster вне форума Ответить с цитированием
Старый 12.09.2009, 11:26   #4
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Я понял, но она то должна указывать на строчку на которой выпадает ошибка
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 12.09.2009, 12:18   #5
AquaKlaster
Delphi,Python,PHP
Форумчанин
 
Аватар для AquaKlaster
 
Регистрация: 04.04.2009
Сообщений: 138
По умолчанию

FlooderThread.Terminate;
тут указывает
AquaKlaster вне форума Ответить с цитированием
Старый 12.09.2009, 13:09   #6
sinedSpb
 
Регистрация: 14.08.2009
Сообщений: 8
По умолчанию

А ты уверен что в момент вызова FlooderThread.Terminate , поток еще существует ведь ты ему задал FlooderThread.FreeOnTerminate := True
По моему тогда уж лучше в ручную делать free такому потоку.
Ну и делать так тоже не очень

FlooderThread := TFlooderThread.Create(false);
после это поток сразу начинает выполняется
а ты ему свойства уже походу присваиваешь тут
FlooderThread.Priority := tpNormal;
FlooderThread.FreeOnTerminate := True;
нет гарантии что поток уже не выполнится до того как ты задашь эти свойства тогда уж лучше
FlooderThread := TFlooderThread.Create(true);
задать свойства потока
а потом FlooderThread.resume
sinedSpb вне форума Ответить с цитированием
Старый 12.09.2009, 14:54   #7
AquaKlaster
Delphi,Python,PHP
Форумчанин
 
Аватар для AquaKlaster
 
Регистрация: 04.04.2009
Сообщений: 138
По умолчанию

Цитата:
Сообщение от sinedSpb Посмотреть сообщение
А ты уверен что в момент вызова FlooderThread.Terminate , поток еще существует ведь ты ему задал FlooderThread.FreeOnTerminate := True
По моему тогда уж лучше в ручную делать free такому потоку.
Ну и делать так тоже не очень

FlooderThread := TFlooderThread.Create(false);
после это поток сразу начинает выполняется
а ты ему свойства уже походу присваиваешь тут
FlooderThread.Priority := tpNormal;
FlooderThread.FreeOnTerminate := True;
нет гарантии что поток уже не выполнится до того как ты задашь эти свойства тогда уж лучше
FlooderThread := TFlooderThread.Create(true);
задать свойства потока
а потом FlooderThread.resume
сделал по твоему всё равно ничего не изменилось
AquaKlaster вне форума Ответить с цитированием
Старый 12.09.2009, 15:21   #8
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

А может был так объявить его :
Код:
FlooderThread := TFlooderThread.Create(nil);
Nil - "пусто" вместо false
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 12.09.2009, 15:43   #9
sinedSpb
 
Регистрация: 14.08.2009
Сообщений: 8
По умолчанию

Трудно сказать что у тебя происходит , не знаю что делается внутри Thread. Единственное что можно сказать , это то что в тот момент когда ты вызываешь FlooderThread.Suspend - thread уже отработал и по скольку ему было выставлено FlooderThread.FreeOnTerminate := True; то он уже удалился и по этому происходит сообщение об ошибке . Не плохо было бы оставить FreeOnTerminate := false ; и посмотреть как это будет работать при таком раскладе ну и попробовать как то подстраховатся и вызывать suspend только если Thread еще активна
sinedSpb вне форума Ответить с цитированием
Старый 12.09.2009, 16:23   #10
AquaKlaster
Delphi,Python,PHP
Форумчанин
 
Аватар для AquaKlaster
 
Регистрация: 04.04.2009
Сообщений: 138
По умолчанию

Цитата:
Сообщение от sinedSpb Посмотреть сообщение
Трудно сказать что у тебя происходит , не знаю что делается внутри Thread. Единственное что можно сказать , это то что в тот момент когда ты вызываешь FlooderThread.Suspend - thread уже отработал и по скольку ему было выставлено FlooderThread.FreeOnTerminate := True; то он уже удалился и по этому происходит сообщение об ошибке . Не плохо было бы оставить FreeOnTerminate := false ; и посмотреть как это будет работать при таком раскладе ну и попробовать как то подстраховатся и вызывать suspend только если Thread еще активна
если ставить FlooderThread.FreeOnTerminate := false; то пишет отказано в доступе(((
AquaKlaster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при работе с canvas "Неверный дескриптор" Алекс Ялта Gamedev - cоздание игр: Unity, OpenGL, DirectX 17 13.06.2011 22:32
Неверный запрос Gromsky SQL, базы данных 9 21.08.2009 18:25