В документации имеет место быть :
it's impossible to guarantee correct operation of OLE controls if they are created
in a window other than the current thread
т.е. если в одном окошке открыть OLE, а потом из другого вызвать его через конструкцию
GLO:OleWindow $ GLO:OleFields {'Некие действия'}
то это может и не работать?
Есть ли решение?
Проблема OLE в 6.3
Clarion, Clarion 7
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Apron63
Re: Проблема OLE в 6.3
Так это вообще не о том. На OLE в другом треде так сослаться вообще невозможноApron63 писал(а):В документации имеет место быть :
it's impossible to guarantee correct operation of OLE controls if they are created
in a window other than the current thread
т.е. если в одном окошке открыть OLE, а потом из другого вызвать его через конструкцию
GLO:OleWindow $ GLO:OleFields {'Некие действия'}
то это может и не работать?
Есть ли решение?
Yufil
Apron63
- NickTsigouro
- Новичок
- Сообщения: 5
- Зарегистрирован: 16 Июнь 2006, 13:00
- Откуда: Москва
- Контактная информация:
Может и работать, и не работать.
До 6.0 все треды работали по одним и тем же адресам памяти, и при переключении тредов происходил swap области данных треда. Поэтому после переключения треда, того окна может просто не оказаться в памяти.
В C6.x треды настоящие, виндовые и у каждого треда своя память и переключение производит винда без каких либо свопов. По идее, должно работать.
НО! GLO:OleWindow и GLO:OleFields должны быть не тредными, и соответствующее окно д.б. открыто в одном экзампляре. Следовательно необходимо использовать средства синхронизации для исключения одновременного доступа к OLE-контролу, GLO:OleWindow и GLO:OleFields из разных тредов.
До 6.0 все треды работали по одним и тем же адресам памяти, и при переключении тредов происходил swap области данных треда. Поэтому после переключения треда, того окна может просто не оказаться в памяти.
В C6.x треды настоящие, виндовые и у каждого треда своя память и переключение производит винда без каких либо свопов. По идее, должно работать.
НО! GLO:OleWindow и GLO:OleFields должны быть не тредными, и соответствующее окно д.б. открыто в одном экзампляре. Следовательно необходимо использовать средства синхронизации для исключения одновременного доступа к OLE-контролу, GLO:OleWindow и GLO:OleFields из разных тредов.
WBR, Nick Tsigouro
NickTsigouro
Вернуться в «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
- ↳ Ресурсы
- ↳ Работа
- ↳ Обо всем ...
- ↳ Обсуждение этого Форума (типа, Гостевая книга)