Добрый день!
Подскажите, пожалуйста правильный выход из ситуации!
Есть простенькое приложение - две процедуры (P1 и P2). P1 написана ручками, P2 генерится по шаблону ABC (View an ASCII File). P2 запускается из P1 с созданием отдельного потока. В каждой процедуре, соответственно, открыто по окошку (не модальному и не mdi). Я хочу, закрывая окно в P1, автоматически закрыть и окно в P2. Как делаю:
в P1 в цикле accept на event:CloseWindow выполняю команду post(event:CloseWindow,,number_of_second_thread), после чего делаю break из accept-цикла. Окно в P1 закрывается, а дальше получаю ошибку: "Accertion failed on line 178 in file aberror.clw. Message: ErrorClass incorrect initialized".
Если правильно понимаю, у меня сначала закрывается приложение, убиваются классы, в том числе ErrorClass, и только затем выполняется post.
Пока я выкрутился тем, что не даю закрывать первое окно при наличии открытого второго, а как это сделать на автомате?
Написал: PKV(132)
Threads в С55
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
А зачем Break? Пусть всё идёт как шло... Просто ABC может ещё кое-чего доделать по Event:CloseWindow, а ты не даёшь
Accept приостановит выполнение текущего треда и вызовет передачу управления на Thread2, который сможет завершиться. А через полсекунды закроется и основной тред.
... А в 6.0 я выскребал эти фрагменты из программы...
---------------------------------------
C уважением,
Юрий Философов,
Главный программист
Корпорация "Диполь", Саратов
E-mail yufil@tacis-dipol.ru (служ)
yufil@mail.ru (дом)
ICQ#75924439
Написал: ClaList(2)
Вообще-то я в своё время изрядно помучился с этой проблемой. В 5.5 параллельное исполнение открытия/закрытия нескольких тредов весьма чреватый глюками процесс. Я у себя использовал искусственную приостановку треда, чтобы дать другому завершиться.Пока я выкрутился тем, что не даю закрывать первое окно при наличии открытого второго, а как это сделать на автомате?
Код: Выделить всё
Post(Event:CloseWindow,,Thread2)
0{Prop:Timer}=50
Accept
Break
End
... А в 6.0 я выскребал эти фрагменты из программы...
---------------------------------------
C уважением,
Юрий Философов,
Главный программист
Корпорация "Диполь", Саратов
E-mail yufil@tacis-dipol.ru (служ)
yufil@mail.ru (дом)
ICQ#75924439
Написал: ClaList(2)