|
События внутри сервера. Как зажигать и ловить?
|
|||
---|---|---|---|
#18+
Народ, есть такая задача. На серваке крутятся две программы (два exe-шника). Они вообще никак не зависят друг от друга, кроме одного! Одна программа должна зажечь событие (без всяких параметров). Другая должна его отловить. Как такое делается? Через WinApi? Нужно реализовать на С#. В какую сторону смотреть? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2016, 15:18 |
|
События внутри сервера. Как зажигать и ловить?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2016, 15:28 |
|
События внутри сервера. Как зажигать и ловить?
|
|||
---|---|---|---|
#18+
или обычный UDP сокет ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2016, 15:34 |
|
События внутри сервера. Как зажигать и ловить?
|
|||
---|---|---|---|
#18+
Зачем создавать каналы? Они точно не нужны. На счет мутексов не понял. Можно в двух словах основную идею? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2016, 15:35 |
|
События внутри сервера. Как зажигать и ловить?
|
|||
---|---|---|---|
#18+
vlsafНа счет мутексов не понял. Можно в двух словах основную идею? https://msdn.microsoft.com/ru-ru/library/f55ddskf(v=vs.110).aspx создаешь в обоих Код: c# 1.
MyMutex это имя, в обоих процессах будет использован один и тот же мутекс. Дальше все также как с неименованным. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2016, 15:44 |
|
События внутри сервера. Как зажигать и ловить?
|
|||
---|---|---|---|
#18+
Я после разных экспериментов остановился на mailslot. Хорошая штука. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2016, 15:52 |
|
События внутри сервера. Как зажигать и ловить?
|
|||
---|---|---|---|
#18+
ИМХУ каналы экономнее и удобнее, не обязательно обрабатывать принятое, запустил асинхронное ожидание соединения, как соединение установили - вот тебе и сигнал что событие случилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2016, 15:56 |
|
События внутри сервера. Как зажигать и ловить?
|
|||
---|---|---|---|
#18+
Дмитрий77Я после разных экспериментов остановился на mailslot. Хорошая штука. Я погуглил, не нашел родных C# классов, поэтому не стал советовать. По сути это надстройка над UDP, можно какой-нибудь UDP-порт открыть на 127.0.0.1 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2016, 15:59 |
|
События внутри сервера. Как зажигать и ловить?
|
|||
---|---|---|---|
#18+
Dima TДальше все также как с неименованным. :) Вот если бы с неименованными работал, вопросов и не задавал. Но спасибо за инфу. Вот, что нарыл (почти тоже самое, что и ты написал) Каждая программа создает объект Mutex по имени. То есть Mutex это именованный объект. А если такой объект синхронизации уже создала другая программа, то по вызову CreateMutex() мы получим указатель на объект, который уже создала первая программа. То есть у обоих программ будет один и тот же объект. Понимаю, что работать нужно через OpenMutex() и ReleaseMutex(). Правильно ли я рассуждаю. Программа подписчик (та, которая должна отреагировать на событие). Должна ждать освобождения мьютекса, используя WaitOne. Программа, которая "зажигает событие", должна мьютекс освобождать через ReleaseMutex. Итак, программа, которая "подписана на событие" должна джать, а как дождалась, снова занимать мьютекс через OpenMutex, потом что-то выполнять, снова занимать и снова становиться в ожидание освобождения. Вопрос вот какой. Если один процесс (exe-шник) занимает мьютекс, то может ли другой процесс его освобождать? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2016, 16:14 |
|
События внутри сервера. Как зажигать и ловить?
|
|||
---|---|---|---|
#18+
Изопропилили обычный UDP сокетили обычный WCF. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2016, 16:16 |
|
События внутри сервера. Как зажигать и ловить?
|
|||
---|---|---|---|
#18+
vlsafЕсли один процесс (exe-шник) занимает мьютекс, то может ли другой процесс его освобождать? Нет. Этим тут мутекс и неудобен. Такое можно через эвенты, но их почему-то не стали именованными делать в C# (в WinAPI можно). Еще есть семафоры , они именованные, вроде как там должно получится. Ни разу не пользовался. Семафор до 1 это тот же эвент. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2016, 16:24 |
|
События внутри сервера. Как зажигать и ловить?
|
|||
---|---|---|---|
#18+
Поизучай NamedPipe. У Рихтера они хорошо расписаны. Глава.28 Асинхронные операции ввода-вывода ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2016, 16:30 |
|
События внутри сервера. Как зажигать и ловить?
|
|||
---|---|---|---|
#18+
Там же про мьютексы, эвенты и семафоры: Глава.29 Примитивные конструкции синхронизации потоков ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2016, 16:36 |
|
События внутри сервера. Как зажигать и ловить?
|
|||
---|---|---|---|
#18+
OK. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2016, 16:49 |
|
События внутри сервера. Как зажигать и ловить?
|
|||
---|---|---|---|
#18+
Алексей КИзопропилили обычный UDP сокетили обычный WCF. Опять же с транспортом NamedPipes ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2016, 17:26 |
|
События внутри сервера. Как зажигать и ловить?
|
|||
---|---|---|---|
#18+
Dima TТакое можно через эвенты, но их почему-то не стали именованными делать в C# А вот это что в таком случае? https://msdn.microsoft.com/en-us/library/41acw8ct(v=vs.110).aspx ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2016, 17:33 |
|
События внутри сервера. Как зажигать и ловить?
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныА вот это что в таком случае? https://msdn.microsoft.com/en-us/library/41acw8ct(v=vs.110).aspx Огромное спасибо. Все получилось. Работает, как часы!!! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2016, 18:23 |
|
|
start [/forum/topic.php?fid=20&tid=1400759]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
8ms |
check topic access: |
8ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 289ms |
total: | 436ms |
0 / 0 |