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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2011, 05:05   #1
cosmic_call
Пользователь
 
Аватар для cosmic_call
 
Регистрация: 15.01.2011
Сообщений: 18
По умолчанию Как правильно завершить поток

не понимаю почему у меня не очищается память после удаления потока
помогите
есть поток у него в Execute цикл

Код:
while Action<>cSNDSTOP do
...ляляля потом когда выхожу из цикла:
..
Destroy
а деструктор
Код:
destructor TPlayThread.Destroy;
...
лялял тут необходимые закрытия драйвера и тд.
...
inherited Destroy
end;
свойство FreeOnTerminate включаю. в чем проблема. почему он после завершения не освобождается из памяти?
cosmic_call вне форума Ответить с цитированием
Старый 13.02.2011, 05:22   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а что в потоке создается еще?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 13.02.2011, 05:32   #3
cosmic_call
Пользователь
 
Аватар для cosmic_call
 
Регистрация: 15.01.2011
Сообщений: 18
По умолчанию

ну там воспроизведение звука низкоуровневое. в Create я задаю свойства для открытия аудиодрайвера. потом в Execute фактически открваю драйвер - waveOutOpen и подготавливаю буфера waveOutPrepareHeader. далее собственно цикл воспроизведения с условием
Код:
while Action<>cSNDSTOP do
из главной программы я просто пишу когда мне нужно
Код:
PlayThread.Playback:=cSNDSTOP;
а после цикла вызываю Destroy где происходит закрытие всех буферов и драйвера. получается я не могу просто обрвать цикл написав в главной программе PlayThread.Free потому что тогда не получится корректно закрыть драйвер.
cosmic_call вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как завершить код? Kerragin Общие вопросы C/C++ 3 14.12.2010 20:23
Как завершить программу из неосновного потока? itni Общие вопросы C/C++ 0 29.05.2010 16:42
Как правильно завершить поток Des Общие вопросы Delphi 5 08.05.2009 20:56
Как завершить программу по условию Iceman Общие вопросы Delphi 8 14.03.2009 00:46
Как корректно завершить цикл? Iren Microsoft Office Excel 4 02.11.2007 09:58