Добрый день!
Подскажите, пожалуйста правильный выход из ситуации!
Есть простенькое приложение - две процедуры (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 7
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию 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)
Гость
Гость
Вернуться в «CLARION for Windows»
Перейти
- CW
- ↳ CLARION for Windows
- ↳ CLARION for Internet
- ↳ Clarion.NET
- Эксклюзив
- ↳ Приват
- CLARION и...
- ↳ Reports
- ↳ Железо
- ↳ Готовые программы, шаблоны, библиотеки...
- ↳ cJSON
- ↳ LibCurl
- ↳ MAV
- ↳ SQL, Oracle, ...
- ↳ Multi-программирование(Pascal/Delphi, и т.д.)
- ↳ WinDev
- DOS
- ↳ CLARION for DOS
- Разное
- ↳ Новости
- ↳ English
- ↳ Ресурсы
- ↳ Работа
- ↳ Обо всем ...
- ↳ Обсуждение этого Форума (типа, Гостевая книга)