![]() |
Модераторы: gambit |
![]() ![]() ![]() |
|
Dimonius |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 11.10.2006 Репутация: нет Всего: 1 |
У меня следующая ситуация. Есть ActiveX Control написанный на C#, установленный на машине пользователя (не на сервере!) и загружаемый в определённую веб страницу. Конрол слушает определённый TCP порт на машине. Так вот, пока страница открыта только в одном окне браузера, то проблем нет. Как только пользователь открывает два и более окна, то разумеется происходит "драка" за порт и все конролы, которые пытаются слушать занятый получают по исключению.
Вопрос в следующем, как организовать так, чтобы в одно время порт прослушивался только одним конролом в одном из окон браузера? Как бы так, чтобы они могли договариваться, кто слушает порт, а кто "отдыхает". Также не нужно забывать о том, что когда окно со слушающим контролом закрывается, какой-нибудь другой контрол в другом окне должен начать прослушивание. Думаю копать в сторону событий, но застрял на том, как отправить событие в другое окно браузера, а точнее контролу в другом окне... Проблема... ![]() P.S. браузер IE |
|||
|
||||
Felan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 2.8.2007 Где: Самара Репутация: нет Всего: 7 |
Думаю лучше сделать синглтон в однопоточных апартаментах. Тогда вообще не надо будет думать ни о чем. Для этого надо немного переделать фабрику, которая создает объект. Получится, что у тебя будет всегда только один объект, который будет маршалится в каждое окно браузера. И не надо будет ничего переключать.
ЗЫЖ Как это будет на C# не знаю. Сам тут недавно. ![]() -------------------- // Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного. |
|||
|
||||
Dimonius |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 11.10.2006 Репутация: нет Всего: 1 |
Felan, спасибо! Идея понятна, но не знаю как это сделать на C# :( Гуру C# помогите пожалуйста. Копаю информацию в интернете, пока безуспешно... будет что нового сообщу ;)
Это сообщение отредактировал(а) Dimonius - 3.9.2008, 13:24 |
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
ну вообще классически проблемы гонки за рессурсы решаются путем использования глобальных объектов синхронизации (мьютексы, семафоры, эвенты)...
вообще думаю, что использовать подобное, в случае если не предпологается "два окна" вполне допустимо (с т.з. морали)... про activeX же надо думать 8-) -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
Dimonius |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 11.10.2006 Репутация: нет Всего: 1 |
Так вот я думаю и ищу информацию как реализовать глобальную синхронизацию множества instances of ActiveX в пределах одной машины.
Felan предлагает хорошую тему, но я пока не догоняю как её реализовать, может кто подскажет как сделать глобальный синглтон в dll на C#? Что-то подобное описано здесь, но как ЭТО сделать на C# не знаю :( |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Распределённые приложения и сеть | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |