17 / 17 / 0
Регистрация: 19.02.2012
Сообщений: 68
|
||||||
1 | ||||||
COM и асинхронный вызов. Непонятки с событиями04.06.2012, 22:29. Показов 2234. Ответов 2
Метки нет Все метки)
(
Добрый день.
Впервые решил разработать ком-сервер, и столкнулся в одной очень интересной проблемой. Мой сервер общается с клиентами средствами событий. т.е. создан dispinterface событий на которые подписывается клиент. Делал все по мануалу. Забегая на перед скажу что данная связка реализрована и работает в штатном режиме отлично. Генеральная задача ком-сервака - это коннект к некой софтине через функции реализованные в DLL (реализация моя). Моя DLL периодически вызывает функции из DLL поставляемой с вышеупомянутой софтиной. Связка "моя DLL - DLL API сторонней софтины" понадобилась чтобы нарастить некий функционал. Связка "ком-сервер - моя DLL" понадобилась чтобы уйти от ограничения "одна DLL - один клиент" (это будет системы роботизированного трейдинга на бирже). Итак, ком-сервер коннектится к DLL (объект работающий с DLL реализует паттерн Синглтон), а неопределенное количество клиентов в ком-серверу. Все получается складно. НО В API DLL сторонней есть функции которые работают асинхронно. В обработчики этих callback-ов я прописал вызов внешних собственных callback-ов с ком-сервака, чтобы передавать через них нужные мне параметры. И они не работают. Если я свой внешний callback вызываю в функции которая непосредственно вызывается с сервака - все корректно, клиенты получают события инициируемые этими callback-ами на серваке. А если мой callback прописан в обработчике callback-а передаваемого в DLL API сторонней софтины, то клиенты просто не видят сгенеренные события... В ком-серваке событие инициируется и отправляется подписчику:
В какую сторону копать подскажите плиз... В чем может быть причина? Сервер, клиент реализован на delphi. DLL на с++... Добавлено через 1 час 59 минут Я так понимаю, что когда сервер самостоятельно инициирует (из callback-а DLL сторонней софтины а не из метода com-объекта) отправку события на клиент, то он не может однозначно определить подписчика который должен получить данное событие. Получается своеобразный "выстрел в небо". По этой причине реакции на клиенте нет. Я прав или нет? Добавлено через 8 часов 7 минут Неужели нет никаких мыслей или предположений? 31 просмотр на текущий момент...
0
|
04.06.2012, 22:29 | |
04.06.2012, 22:29 | |
Ответы с готовыми решениями:
2
Асинхронный вызов Асинхронный вызов функции |
Модератор
![]() 3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,426
|
|
06.06.2012, 07:53 | 2 |
о! и ты здесь) отписал на кубан следующее
если в DLL передается функция, вызываемая ею при определенных обстоятельствах, и внутри этой функции производится вызов функций, переданных клиентами в COM-объект, то все должно работать. однако, если в этих клиентских функциях происходит вызов методов STA COM-объекта, то они не пройдут - объект блокирован вызовом со стороны DLL и вызов его метода будет ожидать снятия блокировки. естественно, ожидание будет вечным. если все необходимое клиентские функции получают через аргументы и не обращаются к COM-объекту, то, вроде должно работать и с STA COM-объектом.
0
|
17 / 17 / 0
Регистрация: 19.02.2012
Сообщений: 68
|
|
07.06.2012, 19:00 [ТС] | 3 |
Да, спасибо. Обсуждение привело к положительному результату. COM-сервак работает и радует своих пользователей
![]()
0
|
07.06.2012, 19:00 | |
07.06.2012, 19:00 | |
Помогаю со студенческими работами здесь
3
Правильный асинхронный вызов Асинхронный вызов httpWebResponse Асинхронный вызов функции Асинхронный вызов: Abort и Callback Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
![]() |
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Laravel 11: новые возможности, гайд по обновлению
Wired 18.02.2025
Laravel 11 - это новая масштабная версия одного из самых популярных PHP-фреймворков, выпущенная в марте 2024 года. Эта версия продолжает традицию внедрения передовых технологий и методологий. . .
|
Миграции в Laravel
Wired 18.02.2025
Разработка веб-приложений на Laravel неразрывно связана с управлением структурой базы данных. При работе над проектом часто возникает необходимость вносить изменения в схему базы данных - добавлять. . .
|
Аутентификация в Laravel
Wired 18.02.2025
В современном мире веб-разработки безопасность пользовательских данных становится критически важным аспектом любого приложения. Laravel, как один из самых популярных PHP-фреймворков, предоставляет. . .
|
Laravel или Symfony: что лучше для старта?
Wired 18.02.2025
В веб-разработке выбор правильного фреймворка может стать определяющим фактором успеха проекта. Особенно это актуально для PHP - одного из самых распространенных языков программирования, где Laravel. . .
|
Что нового в Laravel 12
Wired 18.02.2025
С момента своего появления в 2011 году Laravel постоянно развивается, внедряя инновационные решения и совершенствуя существующие возможности. В начале 2025 года ожидается выход Laravel 12 - новой. . .
|
Роутер в Laravel: как работать с маршрутами
Wired 18.02.2025
Маршрутизация - один из основополагающих элементов любого веб-приложения на Laravel, определяющий как приложение отвечает на HTTP-запросы к различным URL-адресам. По сути, роутинг - это механизм. . .
|
Интеграция шаблона Bootstrap в Laravel PHP
Wired 18.02.2025
Разработка веб-приложений в современном мире требует не только надежного бэкенда, но и привлекательного, отзывчивого интерфейса. Laravel, как один из самых популярных PHP-фреймворков, отлично. . .
|
Использование контроллеров и middleware в Laravel PHP
Wired 18.02.2025
Современная веб-разработка требует четкой организации кода и эффективного управления потоком HTTP-запросов. Laravel, как один из ведущих PHP-фреймворков, предоставляет два мощных инструмента для. . .
|
Фильтрация массива по неточному соответствию элементам другого массива в JavaScript
Wired 18.02.2025
При работе с массивами данных в JavaScript иногда возникает задача поиска и фильтрации элементов по неточному соответствию. В отличие от точного сравнения, когда мы ищем полное совпадение значений,. . .
|
Создаем SPA Router на чистом JavaScript
bytestream 17.02.2025
В современной веб-разработке одностраничные приложения (SPA) стали стандартом для создания динамичных и отзывчивых пользовательских интерфейсов. Ключевым компонентом любого SPA является роутер -. . .
|