Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Два приложения и событие. 
V
    Опции темы
vlsaf
Дата 2.4.2009, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 9.5.2007

Репутация: нет
Всего: 1



Народ, привет.


Задачка такая. Есть два приложения. Одно приложение должно сгенерировать некое событие, а другое приложение должно это событие поймать.
Событие должно быть все-равно каким, но оно должно быть уникальным (не эмуляция нажатия на кнопку Enter)
Есть ли где-то пример, как генерятся события и как они ловятся? Или подскажите какие методы нужно смотреть.

Заранее спасибо за ответы smile
PM   Вверх
Partizan
Дата 2.4.2009, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



google IPC Remoting SendMessage Pipes


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
vlsaf
Дата 2.4.2009, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 9.5.2007

Репутация: нет
Всего: 1



А без межпроцессорного взаимодействия никак?
Два приложения будут всегда выполняться на одной машине.
PM   Вверх
archeg
Дата 2.4.2009, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 6.1.2007
Где: Киев

Репутация: 11
Всего: 27



Два приложения - два процесса. IPC - специальный протокол, созданый для взаимодействия разных процессов, на одной машине
Используй IPC Remoting


--------------------
ИМХО задница есть универсальный интерфейс. Ибо через задницу можно сделать абсолютно ВСЕ (bash.org.ru)

Дядька всегда можно спросить в аське, если не задалбывать - не откажет smile
И вообще, на самом деле я студент, и ненавижу обращение на "Вы") Тут все свои  ;)
PM MAIL ICQ Jabber   Вверх
vlsaf
Дата 2.4.2009, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 9.5.2007

Репутация: нет
Всего: 1



Мне не надо сообщениями меняться.
Нужно с делать событие в винде одной программой, чтобы вторая программа по этому событию смогла завершиться.

Существуют же события нажатия на кнопки и т.д.


Разве нельзя в одной программе сгенерировать событие, послать его в винду.
А другая программа это событие словила. Для чего же тогда нужны события?
PM   Вверх
PashaPash
Дата 2.4.2009, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(vlsaf @  2.4.2009,  18:46 Найти цитируемый пост)

Существуют же события нажатия на кнопки и т.д.

Да, только эти "события" назваются Messages - сообщения.


--------------------
PM MAIL WWW   Вверх
archeg
Дата 2.4.2009, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 6.1.2007
Где: Киев

Репутация: 11
Всего: 27



Ну если просто завершение программы - ты просто можешь кильнуть процесс. А там отловить какой-то аппликейнишЕкзит, и сделать очистку
Отсылать мессаги - залазить в винапи. Как по мне, то программируя на шарпе, надо стараться как можно реже туда залазить smile Кроме того в списке  
Partizanа, был и SendMessage


--------------------
ИМХО задница есть универсальный интерфейс. Ибо через задницу можно сделать абсолютно ВСЕ (bash.org.ru)

Дядька всегда можно спросить в аське, если не задалбывать - не откажет smile
И вообще, на самом деле я студент, и ненавижу обращение на "Вы") Тут все свои  ;)
PM MAIL ICQ Jabber   Вверх
vlsaf
Дата 2.4.2009, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 9.5.2007

Репутация: нет
Всего: 1



Просто кильнуть программу самому очень хочется.. 
Программа должна разорвать соединение с SQL сервером и должна закрыть два потока, а уже потом завершиться.
Если я сделаю Kill, то что будет со потоками, который создал основной процесс? Они захлопнутся или так дальше и будут крутиться?
PM   Вверх
archeg
Дата 2.4.2009, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 6.1.2007
Где: Киев

Репутация: 11
Всего: 27



я же написал) Неуверен правда, но должно работать. Килять нада правильно.
А в программе отлавливаешь например Application.ApplicationExit.
Там чистишь все что надо. Соединения разрываешь. Кстати, потоки при завершении поубиваються сами, соединение тоже должно закрыться (для него диспоуз вызоветься). Но наверное, гламурнее будет его самостоятельно убить в вышеуказаном событии


--------------------
ИМХО задница есть универсальный интерфейс. Ибо через задницу можно сделать абсолютно ВСЕ (bash.org.ru)

Дядька всегда можно спросить в аське, если не задалбывать - не откажет smile
И вообще, на самом деле я студент, и ненавижу обращение на "Вы") Тут все свои  ;)
PM MAIL ICQ Jabber   Вверх
Partizan
Дата 2.4.2009, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



Пайпы попробуй) Один открывает пайп и ждёт сообщений, второй - когда нужно говорит в пайп "Ищезни с глаз долой".
Первый смотрит...ага...деликатно просят закрыться...и закрывается smile

Но вообще наверно ещё можно посмотреть WCF как более актуальную замену Remoting smile


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
PashaPash
Дата 2.4.2009, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Убийцы и пайпы smile
vlsaf, почитай про EventWaitHandle. Одна прога создаст событие и будет его ждать. Вторая - откроет и выставит в signaled.


--------------------
PM MAIL WWW   Вверх
Partizan
Дата 2.4.2009, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



Цитата(PashaPash @ 2.4.2009,  20:47)
Убийцы и пайпы smile
vlsaf, почитай про EventWaitHandle. Одна прога создаст событие и будет его ждать. Вторая - откроет и выставит в signaled.

 smile Истинное решение было простым как две копейки


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Idsa
Дата 3.4.2009, 07:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



Если мне не изменяет память, в случае, когда поток, захвативший EventWaitHandle, завершается, не освободив его, никакого исключения не возникнет - и может образоваться deadlock.
В этом плане мне больше нравится Mutex: он при попытке захватить мьютекс, который был захвачен ныне завершившимся потоком, сгенерирует AbandonedMutexException.

Это сообщение отредактировал(а) Idsa - 3.4.2009, 07:17


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
archeg
Дата 3.4.2009, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 6.1.2007
Где: Киев

Репутация: 11
Всего: 27



Эм.. А если надо пару инстансов приложений? Вряд ли оно будет работать как синглтон. Пахнет химией  smile 

vlsaf, смотри сколько у тя вариантов решения  smile Выбирай любой  smile 


--------------------
ИМХО задница есть универсальный интерфейс. Ибо через задницу можно сделать абсолютно ВСЕ (bash.org.ru)

Дядька всегда можно спросить в аське, если не задалбывать - не откажет smile
И вообще, на самом деле я студент, и ненавижу обращение на "Вы") Тут все свои  ;)
PM MAIL ICQ Jabber   Вверх
PashaPash
Дата 3.4.2009, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Цитата(Idsa @  3.4.2009,  07:09 Найти цитируемый пост)
Если мне не изменяет память, в случае, когда поток, захвативший EventWaitHandle, завершается, не освободив его, никакого исключения не возникнет - и может образоваться deadlock.

Поток не захватывает EventWaitHandle, он дожидается его установки в signaled. Ничего не захватывается - не надо ничего освобождать. Deadlock - это когда два потока захватывают каждый по своему Mutex-у и после этого пытаются захватить чужой Mutex (или любой другой ресурс)


--------------------
PM MAIL WWW   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0774 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.