powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / События внутри сервера. Как зажигать и ловить?
17 сообщений из 17, страница 1 из 1
События внутри сервера. Как зажигать и ловить?
    #39183858
vlsaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ, есть такая задача. На серваке крутятся две программы (два exe-шника).
Они вообще никак не зависят друг от друга, кроме одного!

Одна программа должна зажечь событие (без всяких параметров).
Другая должна его отловить.

Как такое делается? Через WinApi? Нужно реализовать на С#. В какую сторону смотреть?
...
Рейтинг: 0 / 0
События внутри сервера. Как зажигать и ловить?
    #39183872
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Именованный мутекс или каналы .
...
Рейтинг: 0 / 0
События внутри сервера. Как зажигать и ловить?
    #39183882
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или обычный UDP сокет
...
Рейтинг: 0 / 0
События внутри сервера. Как зажигать и ловить?
    #39183887
vlsaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем создавать каналы? Они точно не нужны. На счет мутексов не понял. Можно в двух словах основную идею?
...
Рейтинг: 0 / 0
События внутри сервера. Как зажигать и ловить?
    #39183903
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlsafНа счет мутексов не понял. Можно в двух словах основную идею?
https://msdn.microsoft.com/ru-ru/library/f55ddskf(v=vs.110).aspx
создаешь в обоих
Код: c#
1.
Mutex m = new Mutex(false, "MyMutex");


MyMutex это имя, в обоих процессах будет использован один и тот же мутекс. Дальше все также как с неименованным.
...
Рейтинг: 0 / 0
События внутри сервера. Как зажигать и ловить?
    #39183913
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я после разных экспериментов остановился на mailslot. Хорошая штука.
...
Рейтинг: 0 / 0
События внутри сервера. Как зажигать и ловить?
    #39183924
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХУ каналы экономнее и удобнее, не обязательно обрабатывать принятое, запустил асинхронное ожидание соединения, как соединение установили - вот тебе и сигнал что событие случилось.
...
Рейтинг: 0 / 0
События внутри сервера. Как зажигать и ловить?
    #39183935
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Я после разных экспериментов остановился на mailslot. Хорошая штука.
Я погуглил, не нашел родных C# классов, поэтому не стал советовать. По сути это надстройка над UDP, можно какой-нибудь UDP-порт открыть на 127.0.0.1
...
Рейтинг: 0 / 0
События внутри сервера. Как зажигать и ловить?
    #39183963
vlsaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TДальше все также как с неименованным.

:) Вот если бы с неименованными работал, вопросов и не задавал. Но спасибо за инфу.
Вот, что нарыл (почти тоже самое, что и ты написал)

Каждая программа создает объект Mutex по имени. То есть Mutex это именованный объект. А если такой объект синхронизации уже создала другая программа, то по вызову CreateMutex() мы получим указатель на объект, который уже создала первая программа. То есть у обоих программ будет один и тот же объект.


Понимаю, что работать нужно через OpenMutex() и ReleaseMutex().
Правильно ли я рассуждаю. Программа подписчик (та, которая должна отреагировать на событие). Должна ждать освобождения мьютекса, используя WaitOne. Программа, которая "зажигает событие", должна мьютекс освобождать через ReleaseMutex.

Итак, программа, которая "подписана на событие" должна джать, а как дождалась, снова занимать мьютекс через OpenMutex, потом что-то выполнять, снова занимать и снова становиться в ожидание освобождения.

Вопрос вот какой. Если один процесс (exe-шник) занимает мьютекс, то может ли другой процесс его освобождать?
...
Рейтинг: 0 / 0
События внутри сервера. Как зажигать и ловить?
    #39183968
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилили обычный UDP сокетили обычный WCF.
...
Рейтинг: 0 / 0
События внутри сервера. Как зажигать и ловить?
    #39183993
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlsafЕсли один процесс (exe-шник) занимает мьютекс, то может ли другой процесс его освобождать?
Нет. Этим тут мутекс и неудобен. Такое можно через эвенты, но их почему-то не стали именованными делать в C# (в WinAPI можно).
Еще есть семафоры , они именованные, вроде как там должно получится. Ни разу не пользовался. Семафор до 1 это тот же эвент.
...
Рейтинг: 0 / 0
События внутри сервера. Как зажигать и ловить?
    #39184006
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поизучай NamedPipe. У Рихтера они хорошо расписаны. Глава.28 Асинхронные операции ввода-вывода
...
Рейтинг: 0 / 0
События внутри сервера. Как зажигать и ловить?
    #39184028
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там же про мьютексы, эвенты и семафоры: Глава.29 Примитивные конструкции синхронизации потоков
...
Рейтинг: 0 / 0
События внутри сервера. Как зажигать и ловить?
    #39184051
vlsaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OK. Спасибо.
...
Рейтинг: 0 / 0
События внутри сервера. Как зажигать и ловить?
    #39184112
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КИзопропилили обычный UDP сокетили обычный WCF.
Опять же с транспортом NamedPipes
...
Рейтинг: 0 / 0
События внутри сервера. Как зажигать и ловить?
    #39184124
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TТакое можно через эвенты, но их почему-то не стали именованными делать в C#
А вот это что в таком случае? https://msdn.microsoft.com/en-us/library/41acw8ct(v=vs.110).aspx
...
Рейтинг: 0 / 0
События внутри сервера. Как зажигать и ловить?
    #39184172
vlsaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныА вот это что в таком случае? https://msdn.microsoft.com/en-us/library/41acw8ct(v=vs.110).aspx
Огромное спасибо. Все получилось. Работает, как часы!!! :)
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / События внутри сервера. Как зажигать и ловить?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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