Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка при завершении многопоточного приложения 
:(
    Опции темы
Susel
  Дата 20.5.2006, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 27.3.2004

Репутация: нет
Всего: нет



Есть: - класс TMyThread=class TThread, CreateSuspended=true, в методе Execute - цикл while not Terminated; 
         - главная форма, при создании которой создается n потоков

Проблема в следующем, что при закрытии главной формы вываливается Access violation......

Пробовал в конструкторе потока FreeOnTerminate:=False и в деструкторе формы вызывать Terminate и Free для каждого из потоков - та же ошибка, но если деструктор выполнять пошагово в режиме трассировки - всё ок, ошибка не происходит.

Может подскажет кто, в  чём проблема!?  

Да, ещё.....управление выполнением потока осуществляется естествено при помощи Resume/Suspend........ 

Это сообщение отредактировал(а) Susel - 20.5.2006, 14:19
PM MAIL   Вверх
Демо
Дата 20.5.2006, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Ты бы воспроизвел ошибку на тестовом примере - тогда можно было бы говорить о чем-то.

А так простой ответ - ошибка в программе.

Добавлено @ 14:49 
А пока небольшой совет.

Для каждого работающего потока в Form.OnDestroy выполни Terminate. 


--------------------
    
PM MAIL ICQ Skype   Вверх
Susel
Дата 20.5.2006, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 27.3.2004

Репутация: нет
Всего: нет



Хм.... при попытке создать тестовый пример - ошибка не выскакивает......:-)

Добавлено @ 15:07 
Делал Terminate в Form.OnDestroy - не помогает..... 
PM MAIL   Вверх
Демо
Дата 20.5.2006, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Цитата(Susel @  20.5.2006,  15:06 Найти цитируемый пост)
Хм.... при попытке создать тестовый пример - ошибка не выскакивает...


Знчит без кода ничего не сказать конкретного. 


--------------------
    
PM MAIL ICQ Skype   Вверх
Susel
Дата 20.5.2006, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 27.3.2004

Репутация: нет
Всего: нет



Нашёл в чём баг.... После цикла while not Terminated в Execute стоял вызов Synhronize.... В функции синхронизации - обращение к объекту - члену TMyThread.... Страно, что объекты потока очитились до окончания выполнения процедуры Execute....  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1042 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.