потоки

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Гость

Сообщение Гость »

Здравствуйте!
В листе говорили о глюках в потоках.
Столкнулся с похожими симптомами. В программе на 5.5H, ШВС сделал тулбокс, на котором по мере открытия окон показываются пиктограмма, краткая подпись и тип, идентифицирующий запись в окне. Активируется набор для верхнего окна каждого потока. Переключение потоков осуществляется щелчком мышки по пиктограммке. Плюс добавлены кнопки последовательного переключения потоков вперед/назад и закрытие всех потоков.
Переключение реализуется обычным способом через settarget и 0{PROP:Active}.
Начинаю интенсивно жать на пиктограммки и кнопки - уже почти два часа жму :-))
Если окна не максимизированы, то вроде все отрабатывает нормально. Стоит начать играть с максимизацией - получаю через некоторое время либо сообщение о неоткрытом файле, или неопределенной переменной, либо виндовый даун (тестится под Win98).
Вопрос такой. Действительно ли в клашином менеджере потоков глючит именно максимизация окон (хорошо бы дело было в ошибке с моей стороны). А если да, то значит ли это, что от максимизации придется отказаться?
Сорри, если это уже обсуждалось, в архивах ответа не нашел.

С уважением,
Вячеслав Черников support@finsoft.ryazan.ru
Написал: ClaList(2)
Гость

Сообщение Гость »

Да, игра с максимизированными окнами - слабое место
менеджера потоков C55.

Есть несколько советов разных авторов:

1. Закомментировать все вызовы RefreshWindow в обработке события
EVENT:GainFocus кроме первого в секции IF NOT WindowInitialized.

2. Использовать в обработке события EVENT:GainFocus, для определения
активности данного окна, код {Prop:Active}.

3. Убрать у окон кнопку максимизации и возможность изменять размеры.

4. Откатиться на C55.D

Был еще совет от кого-то из коллег в нашей рассылке -
эмулировать максимизацию окна ручной подгонкой его размера
под размер клиентской области фрейма.

Я частично использую совет 3. Хотя больших проблем именно
из-за этого у меня нет - пользователи привыкли работать
с максимизированными окнами и без особой нужды не переключают
их туды-сюды.

=============================
С уважением, Олег А. Руденко.
Oleg_Rudenko@mail.ru
Oleg_Rudenko@mail333.com

Библиотека DynaLib
http://dynalib.narod.ru

(Добавление)

Здравствуйте, Олег!

Спасибо за информацию, особенно про GainFocus. У меня еще своя ошибка
закралась - не везде отсемафорил работу с глобальными очередями, хранящими
списки открытых окон и потоков. Сейчас вроде более менее нормально работает,
но это при переключениях на одном компе (даже очень быстром :-)).
Работа с максимизированными окнами - это пожелание заказчика. Они привыкли
так на 1С. Там интерфейс весьма приличный, вот и приходится тратить кучу
времени, чтобы перекрыть его функциональность.

С уважением,
Вячеслав Черников

(Добавление)
Да, игра с максимизированными окнами - слабое место
менеджера потоков C55.
Не только максимизированными. Ещё как минимум содержащими обработку по таймеру и обработку OCX . А без таймера не всегда получается
передавать сигналы из задачи в задачу :(

---------------------------------------
C уважением,
Юрий Философов,
Главный программист
Корпорация "Диполь", Саратов
E-mail yufil@tacis-dipol.ru (служ)
yufil@mail.ru (дом)
ICQ# 75924439
Написал: ClaList(2)
Ответить