Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Распределённые приложения и сеть > ActiveX в нескольких окнах браузера |
Автор: Dimonius 2.9.2008, 22:13 |
У меня следующая ситуация. Есть ActiveX Control написанный на C#, установленный на машине пользователя (не на сервере!) и загружаемый в определённую веб страницу. Конрол слушает определённый TCP порт на машине. Так вот, пока страница открыта только в одном окне браузера, то проблем нет. Как только пользователь открывает два и более окна, то разумеется происходит "драка" за порт и все конролы, которые пытаются слушать занятый получают по исключению. Вопрос в следующем, как организовать так, чтобы в одно время порт прослушивался только одним конролом в одном из окон браузера? Как бы так, чтобы они могли договариваться, кто слушает порт, а кто "отдыхает". Также не нужно забывать о том, что когда окно со слушающим контролом закрывается, какой-нибудь другой контрол в другом окне должен начать прослушивание. Думаю копать в сторону событий, но застрял на том, как отправить событие в другое окно браузера, а точнее контролу в другом окне... Проблема... ![]() P.S. браузер IE |
Автор: Felan 3.9.2008, 07:28 |
Думаю лучше сделать синглтон в однопоточных апартаментах. Тогда вообще не надо будет думать ни о чем. Для этого надо немного переделать фабрику, которая создает объект. Получится, что у тебя будет всегда только один объект, который будет маршалится в каждое окно браузера. И не надо будет ничего переключать. ЗЫЖ Как это будет на C# не знаю. Сам тут недавно. ![]() |
Автор: Dimonius 3.9.2008, 08:15 |
Felan, спасибо! Идея понятна, но не знаю как это сделать на C# :( Гуру C# помогите пожалуйста. Копаю информацию в интернете, пока безуспешно... будет что нового сообщу ;) |
Автор: jonie 3.9.2008, 22:40 |
ну вообще классически проблемы гонки за рессурсы решаются путем использования глобальных объектов синхронизации (мьютексы, семафоры, эвенты)... вообще думаю, что использовать подобное, в случае если не предпологается "два окна" вполне допустимо (с т.з. морали)... про activeX же надо думать 8-) |
Автор: Dimonius 3.9.2008, 23:06 |
Так вот я думаю и ищу информацию как реализовать глобальную синхронизацию множества instances of ActiveX в пределах одной машины. Felan предлагает хорошую тему, но я пока не догоняю как её реализовать, может кто подскажет как сделать глобальный синглтон в dll на C#? Что-то подобное описано http://www.rsdn.ru/article/com/dllsingleton.xml, но как ЭТО сделать на C# не знаю :( |