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

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

Как такое делается? Через WinApi? Нужно реализовать на С#. В какую сторону смотреть?
...
Рейтинг: 0 / 0
02.03.2016, 15:28
    #39183872
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
События внутри сервера. Как зажигать и ловить?
Именованный мутекс или каналы .
...
Рейтинг: 0 / 0
02.03.2016, 15:34
    #39183882
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
События внутри сервера. Как зажигать и ловить?
или обычный UDP сокет
...
Рейтинг: 0 / 0
02.03.2016, 15:35
    #39183887
vlsaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
События внутри сервера. Как зажигать и ловить?
Зачем создавать каналы? Они точно не нужны. На счет мутексов не понял. Можно в двух словах основную идею?
...
Рейтинг: 0 / 0
02.03.2016, 15:44
    #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
02.03.2016, 15:52
    #39183913
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
События внутри сервера. Как зажигать и ловить?
Я после разных экспериментов остановился на mailslot. Хорошая штука.
...
Рейтинг: 0 / 0
02.03.2016, 15:56
    #39183924
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
События внутри сервера. Как зажигать и ловить?
ИМХУ каналы экономнее и удобнее, не обязательно обрабатывать принятое, запустил асинхронное ожидание соединения, как соединение установили - вот тебе и сигнал что событие случилось.
...
Рейтинг: 0 / 0
02.03.2016, 15:59
    #39183935
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
События внутри сервера. Как зажигать и ловить?
Дмитрий77Я после разных экспериментов остановился на mailslot. Хорошая штука.
Я погуглил, не нашел родных C# классов, поэтому не стал советовать. По сути это надстройка над UDP, можно какой-нибудь UDP-порт открыть на 127.0.0.1
...
Рейтинг: 0 / 0
02.03.2016, 16:14
    #39183963
vlsaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
События внутри сервера. Как зажигать и ловить?
Dima TДальше все также как с неименованным.

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

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


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

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

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


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