Страница 73 из 157

Clarion 11-12

Добавлено: 13 Сентябрь 2021, 9:36
gopstop2007
talgat55 писал(а): 12 Сентябрь 2021, 17:43 а как запускать в указанном случае ?
viewtopic.php?p=30219#p30219 смотрим пункт - Процедура проверки перед входом в программу.

Clarion 11-12

Добавлено: 13 Сентябрь 2021, 10:17
talgat55
ok

Clarion 11-12

Добавлено: 13 Сентябрь 2021, 11:23
kreator
Разве start создаёт новый процесс? Ненаучно.

Clarion 11-12

Добавлено: 13 Сентябрь 2021, 11:47
Губин Игорь
kreator писал(а): 13 Сентябрь 2021, 11:23 Разве start создаёт новый процесс? Ненаучно.
Вопрос в том, когда его использовать и как на это отреагирует эта коллаборация фич и глюков именуемая Clarion + Windows...

Я, в своё время, долго боролся при переходе.

Краткие итоги и правила
1. Если переменная используется в головной процедуре/потоке, то он НЕ должна иметь атрибут THREAD. И дело не в том, что эта операция лишена смысла, последствия могут быть самые разные, вплоть до вылета программы.
2. Использование CriticalSection в виде матрёшки, а тем более одной и той же, может привести к клинчу.
3. start лучше всего выполнять после открытия фрейма, если нет цели получить несколько независимых не знаю что. И ещё лучше не выполнять несколько start одновременно, если важен порядок выполнения. Что запустится раньше, а что позже, знает только генератор случайных чисел. Надёжнее выполнять последовательно из запускаемых процедур start(процедура1) - Процедура 1 start(процедура 2)
4. Открытие файла с атрибутом Thread в головной процедуре не обязательно приводит к его открытию во всех последующих Thread.
5. Глобальные Queue это, конечно, хорошо, но муторно. Разумнее использовать IMDD

Clarion 11-12

Добавлено: 13 Сентябрь 2021, 13:29
Игорь Столяров
Губин Игорь писал(а): 13 Сентябрь 2021, 11:47 Надёжнее выполнять последовательно из запускаемых процедур start(процедура1) - Процедура 1 start(процедура 2)
Обсуждали: если нужно запустить несколько потоков (например при запуске программы открыть несколько MDI окно),
то очень хорошо работают события.
- Start(Proc1) и ждём событие об успехе выполнения;
- После запуска из Proc1 посылаем событие в родительский поток об успешном запуске;
- Запускаем следующий поток Start(Proc2) и ждём событие об успехе и т.д.
Губин Игорь писал(а): 13 Сентябрь 2021, 11:47 4. Открытие файла с атрибутом Thread в головной процедуре не обязательно приводит к его открытию во всех последующих Thread.
А разве должно ?
Атрибут Thread для файла говорит о том, что в каждом потоке у него будет отдельная копия буфера обмена (RECORD).

Clarion 11-12

Добавлено: 13 Сентябрь 2021, 14:19
Губин Игорь
Игорь Столяров писал(а): 13 Сентябрь 2021, 13:29 Обсуждали: если нужно запустить несколько потоков (например при запуске программы открыть несколько MDI окно),
то очень хорошо работают события.
- Start(Proc1) и ждём событие об успехе выполнения;
- После запуска из Proc1 посылаем событие в родительский поток об успешном запуске;
- Запускаем следующий поток Start(Proc2) и ждём событие об успехе и т.д.
Я пробовал такой вариант, но возникали странные задержки. Потому-то и сделал шаблон в котором поток запускает следующий по своей готовности. Так никаких вариантов на то, что сработает не так.

У меня требуется при старте приложения запуск потоков в строго определённом порядке.
Игорь Столяров писал(а): 13 Сентябрь 2021, 13:29 А разве должно ?
Ну так было же. Да и почему-то файл то считается открытым, то - нет.

Кстати, для IMDD раньше файл считался открытым. Сейчас проверять лень.

Clarion 11-12

Добавлено: 13 Сентябрь 2021, 14:27
Игорь Столяров
Губин Игорь писал(а): 13 Сентябрь 2021, 14:19 Кстати, для IMDD раньше файл считался открытым. Сейчас проверять лень.
Возможно здесь идёт речь об параметре /THREADEDCONTENT для IMDD файла.
Т.е. речь о доступности файла во всех потоках, но не его открытости ...

Clarion 11-12

Добавлено: 13 Сентябрь 2021, 14:30
Губин Игорь
Игорь Столяров писал(а): 13 Сентябрь 2021, 14:27 Возможно здесь идёт речь об параметре /THREADEDCONTENT для IMDD файла.
Проверял на варианте, когда в каждом потоке своё содержимое, т.е. формально, независимые файлы.

Да не важно сейчас всё это...

Clarion 11-12

Добавлено: 14 Сентябрь 2021, 9:11
talgat55
У меня проект multi dll ( с63- с11 ) - успешно заработал все ОК ! всем спасибо !

Clarion 11-12

Добавлено: 25 Сентябрь 2021, 8:15
finsoftrz
Кто-нибудь замечал, что подсветка синтаксиса в редакторе с11 не всегда корректно работает?
Например, contents() и context() выделяются одинаково, хотя второй инструкции вроде как в кларионе нет.

Clarion 11-12

Добавлено: 25 Сентябрь 2021, 8:27
finsoftrz
Кстати, файлы с расширениями clw, inc, tpl, tpw и т.д. можно ассоциировать с clarion.exe и открывать прямо из проводника или из своего внутреннего софта для разработки. Открываются сразу в редакторе, а если среда уже запущена, то на новой закладке в редакторе. Если так пытаемся открыть уже открытый файл, то переключается на соответствующую закладку. Вроде все правильно происходит.

Clarion 11-12

Добавлено: 29 Сентябрь 2021, 14:03
Игорь Столяров
Новый треш в C11.1.0.13758 который коснётся всех. :(
Покажу на штатном примере PEOPLE (исходник test.zip можно взять в TMP папке FTP форума)

1. Открываем MDI окно (я для наглядности немного увеличил). Потом ещё одно. Всё штатно.
1.jpg

2. Закрываем второе окно.
Первое сворачиваем и разворачиваем.
Ещё раз открываем второе окно - оно теперь открывается за первым. :(
2.jpg

3. И теперь так будет всегда.
Самое интересное, что карточки редактирования списка (FORM) тоже будут открываться на заднем фоне.

Можете проверить в своих программах.
Есть идеи, что это ?

Clarion 11-12

Добавлено: 29 Сентябрь 2021, 14:52
kreator
Да уж! Неприятная жесть. Самое интересное, что даже с одним окном такое поведение. Минимизация окна ломает счётчик тредов? Надо писать SV.

Clarion 11-12

Добавлено: 29 Сентябрь 2021, 15:19
Игорь Столяров
kreator писал(а): 29 Сентябрь 2021, 14:52 Минимизация окна ломает счётчик тредов
Моя версия: окну присваивается атрибут TOOLBOX что бы вытянуть его наверх при развороте в AnyScreen :(

Clarion 11-12

Добавлено: 29 Сентябрь 2021, 15:37
finsoftrz
В англоязычных группах обсуждалось, известный баг.