| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: ActiveX/СОМ/CORBA > COM сервер для контроля потоков приложения. |
| Автор: Чучмек 8.4.2011, 14:21 |
| Для контроля состояния потоков приложения, достаточно на каждый поток созать ProgressBar. Однако,каждая запущенная копия приложения имеет свое окно,что не совсем (или совсем не) удобно. Одним из возможных решений является создание COM сервера, в виде exe. А в каждом потоке инициализировать интерфейс сервера. Вопрос. 1. Требуется ли дополнительная синхронизация при вызове методов COM сервера из потоков/приложений? 2. Как отменить закрытие COM сервера,после закрытия всех приложений подключаемых к нему? |
| Автор: cat512 9.4.2011, 11:46 | ||||||
из такого описания мало что понятно! Например что такое
?
Эти "потоки приложения " где конкурируют? На клиенте или на сервере? Архитектуру можно построить разными способами. За это отвечает параметр "threading model" STA сериализует вызовы серверу. MTA, Free and Both - требуют синхронизации. Причём этот параметр актуален только для in-proc серверов. Если потоки создаются и конкурируют на out-proc сервере, то в этом случае необходима синхронизация.
Имеется ввиду уничтожение? Если да, то время жизни Com-объектов, контролируется механизмом подсчёта ссылок. Отсюда следствие, при иниц. сервера, хранить лишнюю ссылку на объект |
| Автор: cat512 14.4.2011, 20:40 | ||||||
Нет не так. То что ты описал, зависит от двух параметров Threading model и Instancing. Instancing - определяет, как будут обрабатываться вызовы клиентов (одним общим объектом или отдельным для каж. вызова) Threading model - определяет, будут ли доступны и каким образом, объекты сервера в многопоточной среде.
Как абстрактно был задан вопрос, такой ответ на него ты и получил! Если есть воображение, то не вижу проблемы сделать это по другому. Например реализовать свой протокол освобождения объектов, между клиентом и сервером, или например реализовать некий диспетчер, который будет перехватывать вызовы на уничтожения объекта.
Конечно же есть. При создании объекта, всегда вызывается метод Initialize. Думаю дальше сам догадаешься что делать |
| Автор: Чучмек 16.4.2011, 00:04 |
ага нашел, override. А для завершения - переопределить destroy.? |
| Автор: cat512 16.4.2011, 17:01 | ||
да, перекрываешь destroy и радуешься жизни |
| Автор: Чучмек 29.5.2011, 16:56 | ||||||||||
Да здравствует "ВСЕ ЧЕРЕЗ ЖОПУ"!!! |
| Автор: cat512 31.5.2011, 09:24 |
| чё - то у тебя как то сложно всё |
| Автор: Чучмек 1.6.2011, 20:05 |
А как проще? |