Страница 1 из 1

Ошибка закрытия окна MDI

Добавлено: 14 Март 2010, 23:28
Stalker
Здравствуйте, уважаемые Гуру!

Помогите решить седующую задачу.
С63 9053 объект FeBrowser (File Explorer Browser от CapeSoft (http://www.capesoft.com/).)
Суть проблеммы такова . Имеется окно Windows MDI , в нем имеется до 15 вкладок, на каждой открывается объект FeBrowser, в файле tps содержатся ссылки на различные страницы Интернет и отображаются в объектах FeBrowser . Что то типа Интернет броузера. Работает все нормально, загрузка, переходы и т.д.
Проблемма закрытия окна. При закрытии окна прога делает паузу на сек 5-10 и вылетает стандартное окно ошибки.

Обнаружена ошибка.Приложение будет закрыто Передайте Microsoft сведения об ошибке. Создан отчет и т.д.
Такое впечатление, что прога не успевает коректно убить открытые объекты.
Закрытие осуществляется по стандартной кнопке Close. Другие окна которые имеют 2-3 объекта закрываются коректно.
Пытался убивать по очереди с остановом, ничего не дало. Если , кто встречал подобное подскажите куда рулить.
Винда XP
C уважением, Stalker.

Re: Ошибка закрытия окна MDI

Добавлено: 16 Март 2010, 18:05
WadimZapara
Похоже на то, что происходит обращение к УЖЕ НЕ СУЩЕСТВУЮЩЕЙ переменной. Типа после Dispose() или после иной операции возвращения памяти системе. Либо другой вариант - одновременный доступ из нескольких потоков (Thread) к одной и той же переменной.
Под отладчиком-то что говорит ? Не о такой попытке доступа к памяти?

Может надо сначала объекты поубивать? Типа они ещё не успели закрыться автоматом, а родительское для них твоё MDI-окно уже закрылось...

Re: Ошибка закрытия окна MDI

Добавлено: 16 Март 2010, 23:31
Stalker
Спасибо за подсказку , попробую поработать с отладчиком, а с переменными вполне реально, глобальных переменных много и используются давольно интенсивно во всех окнах.
В принципе попробую поочередно убивать объекты с остановкой Stop() после каждого убийственного
действия. Спасибо.
С уважением Stalker.

Re: Ошибка закрытия окна MDI

Добавлено: 23 Апрель 2010, 1:17
WadimZapara
Stalker писал(а):В принципе попробую поочередно убивать объекты с остановкой Stop() после каждого убийственного действия
Самое интересное, что это может не помочь, так как пока ты висишь на СТОПЕ, вся критичная память успеет освободиться. Так вряд ли что найдёшь...
Для определения проблемы попробуй искусственно затормозить выход из процедур после закрытия окна циклом по таймеру на пол-секунды. ну типа:

Код: Выделить всё

  map
tormoz procedure
  end

tormoz procedure
t  long,auto
  code
   t = clock() + 500
   loop while clock() < t
     yield
   end
 return

! А ВО ВСЕХ КРИТИЧНЫХ МЕСТАХ - ПОСЛЕ CLOSE(WINDOW), НО ПЕРЕД RETURN
  close(window)
  tormoz()
  return
если перестанет валиться - убирай по одному эти вызовы и найдёшь место, а дальше - или доковыряться до причины, или оставить тормоз :roll:

Re: Ошибка закрытия окна MDI

Добавлено: 25 Апрель 2010, 16:54
Stalker
Здравствуйте , WadimZapara!
Cпасибо за помощь, попробую, еще спасибо за подсказку и код по формированию записей файла в виде дерева.

С уважением, Stalker.

Re: Ошибка закрытия окна MDI

Добавлено: 30 Апрель 2010, 17:17
Stalker
Здравствуйте , WadimZapara!

Огромное Cпасибо за помощь, все получилось, даже видно реально , как по очереди убиваются созданные контролы.
Ошибка больше не вылетает.

С уважением, Stalker

Re: Ошибка закрытия окна MDI

Добавлено: 01 Май 2010, 0:55
WadimZapara
Очень рад. Спасибо, что сообщил итог. :D