powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Использование одного объекта несколькими клиентами (Singleton)
9 сообщений из 9, страница 1 из 1
Использование одного объекта несколькими клиентами (Singleton)
    #32411008
_DF_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется COM-объект, он есть класс в DLL. Необходимо из независимо выполняемых методов разных классов вызвать создание объекта таким образом, чтобы оба класса получили ссылку на один и тот же объект.

Например, так:
Dim m1, m2 As MyCoolServer
Dim s As String
Set m1 = New MyCoolServer
m1.SetMess ("aaa")
Set m2 = New MyCoolServer
s = m2.GetMess

после выполнения s = "aaa"

Пример упрощенный, на самом деле создание выполняется из разных классов, но пока не работает и так.

Нужно это для того, чтобы переменная серверного класса из одного клиентского класса устанавливалась, а в другом использовалась.

Как можно сделать это средствами VB?

Возможно ли на VB реализовать межпроцессное взаимодействие (Например, Event или Mutex)?
...
Рейтинг: 0 / 0
Использование одного объекта несколькими клиентами (Singleton)
    #32411164
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так лучше:

public static function GetMyCoolServer() as MyCoolServer
dim a as MyCoolServer
if a is Null then set a=new MyCoolServer
set GetMyCoolServer=a
end function

-----
то, что ты хочешь можно сделать непосредственно в фабрике объекта, но это нужен С++
...
Рейтинг: 0 / 0
Использование одного объекта несколькими клиентами (Singleton)
    #32412278
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
то, что ты хочешь можно сделать непосредственно в фабрике объекта, но это нужен С++
Или С# :)
if a is Nothing

ИМХО на VB это не получится. Static даст сттического мембера в пределах oбьекта, а человеку нужно чтобы ее разделяли все инстатнсы. Если я правильно понял.



Magnus
...
Рейтинг: 0 / 0
Использование одного объекта несколькими клиентами (Singleton)
    #32412286
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощения, работает.


public static function GetMyCoolServer() as MyCoolServer
dim a as MyCoolServer
if a is Nothing then set a=new MyCoolServer
set GetMyCoolServer=a
end function

Это нужно куда нибудь в публичный модуль.



Magnus
...
Рейтинг: 0 / 0
Использование одного объекта несколькими клиентами (Singleton)
    #32414819
_DF_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>то, что ты хочешь можно сделать непосредственно в фабрике объекта, но это
>нужен С++

Нужно только на VB. На VC бы сделал.


>public static function GetMyCoolServer() as MyCoolServer
>dim a as MyCoolServer
>if a is Nothing then set a=new MyCoolServer
>Set GetMyCoolServer=a
>end function

К сожалению, так работает только когда все объекты, вызывающие эту ф-ю находятся в одном процессе. Сорри, сразу не написал, что надо из разных
Т.е.

' Process 1
Dim m1 as MyCoolServer
Set m1 = New MyCoolServer ' Можно как угодно, напр Single.Create
m1.SetMess ("test passed")

' Process 2
Dim m2 as MyCoolServer
Dim s as String
Set m2 = New MyCoolServer
s = m2.GetMess 's = "test passed"
...
Рейтинг: 0 / 0
Использование одного объекта несколькими клиентами (Singleton)
    #32415210
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Компиль свой сервер в отдельную библиотеку(ActiveX) и вызывай функцию из нее. В результате все процессы будут обращаться к одному серверу.

Удачи.

Magnus
...
Рейтинг: 0 / 0
Использование одного объекта несколькими клиентами (Singleton)
    #32415486
_DF_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Компиль свой сервер в отдельную библиотеку(ActiveX) и вызывай функцию >из нее. В результате все процессы будут обращаться к одному серверу.

Я понимаю, речь идет об ActiveX DLL. У меня так и собрано.
Сервер в DLL, зарегистрировал его regsvr32, есть 2 Exe-файла, один пишет в переменную (SetMess), другой читает.
Вот именно так и не работает.
...
Рейтинг: 0 / 0
Использование одного объекта несколькими клиентами (Singleton)
    #32415498
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как именно не работает? Для второго клиента создается новый обьект?
Попробуй добыть дебаг инфу в ран тайме, например, опиши состояние сервера при вызовах, все что можешь. И куда нибудь в файл, далее можно анализировать.

Magnus
...
Рейтинг: 0 / 0
Использование одного объекта несколькими клиентами (Singleton)
    #32428003
_DF_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за помощь, сделал по другому, через ActiveX Control, все работает.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Использование одного объекта несколькими клиентами (Singleton)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]