Потоки в c55

Clarion, Clarion 7

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

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

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

Добрый день, коллеги.

Тут гдето пролетало про проблемы в C55 с потоками.
Подскажите, кто знает, что за проблемы и как с ними бороться.
А то у меня в программе ошибки какието плавающие возникают.
Например открываю окно через start(ProcName, 25000)
Из него вызываю другое и при этом вызове вылетает сообщение:
"Unable to open MDI window on APPLICATION'S thread. Do you want to GPF?" причем иногода вылетит, а иногда нет.
Подскажите кто что думает?

Обстановка C55H, ШВС

--
С уважением,
Александр Юрьев mailto:sash@softmaster.ru
ICQ 59248879

1. Поотключай таймеры в MDI-окнах, если есть. И на Frame тоже...
2. Если у тебя в MDI-окнах есть OCX, деактивируй их перед Start
3. А тебе точно надо запускать Start из MDI-окна ? Чревато... Может быть, лучше запостить сообщение на Frame и пусть он запускает ?
4. Купи Cw6, там нет этих проблем :)

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

Написал: ClaList(2)
Гость

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

3. А тебе точно надо запускать Start из MDI-окна ? Чревато...
Может быть, лучше запостить сообщение на Frame и пусть он запускает ?
Я наверно неточно объяснил. start идет из фрейма, дальше из окна вызывается source из которого еще окно. Ощущение такое что в какой то момент поток теряется, и оказываемся опять во фрейме (хотя окно, открытое через start не закрыто). Была пробема связаная с popup.
Из подбной ситуации что я выше описал, в source вызывался popup, после этого с определенной долей вероятности тоже вылетал GPF. Убрал popup заменил на окошко, вроде стало нормально.
Кстати таймер на frame стоит. Изза этого, думаешь, такое может быть?
4. Купи Cw6, там нет этих проблем :)
Судя по рассылке там других проблем хватает, к тому ШВС под CW6 кажется нету. Или я о чемто не вкурсе?

Вообще эта шляпа с потоками так достала, пожалел что перешел с Cw5.
Например идет обработка файла в цикле. Берешь пару раз переключаешься между задачами. И на очередной next(file) вылетает ошибка что файл оказывается не был открыт. Ваще бред какойто, кстати в этом приложении тоже кажись стоит таймер на frame. Пробовал в начале запомнить поток, а затем делать settarget везде где можно, не помогло :(
OCX не использую. Используется dll написанная на дельфях, но только в отчетах (FRB), для генерации штрихкода товара, это может влиять?

--
Best regards,
Юрьев Александр

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

А как таймеры влияют, в чем глючность?

--
С уважением,
Александр Юрьев
Написал: ClaList(2)
Гость

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

А очень просто. Таймер - единственное событие, делающее тред активным во время прерывания. Во всех других случаях в C55 поток управления не может быть прерван. И если происходит, например, длительная инициализация открытия окна, а в этот момент в закрытом треде происходит прерывание по таймеру, должно происходить переключение на другой тред. И обычно происходит. Но иногда ... В общем, сам напарывался :( . В итого по Event:LoseFocus таймеры глушил, а в Event:GainFocus оживлял.

Хотя.. это моё ИМХО и спорить не собираюсь...

---------------------------------------
C уважением,
Юрий Философов
Написал: ClaList(2)
Ответить