2016-04-27 5 views
0

У меня есть приложение (настольное приложение C#), которое запускается из другого приложения C#. Для передачи значения от родительского приложения к дочернему приложению мы используем текстовый файл. Родительское приложение перед его запуском записывает значения в текстовый файл, а дочернее приложение читает его.Как передать значение между двумя процессами (.net C# exe)

Детское приложение обрабатывает значение и вычисляет результат.

Проблема: после того, как пользователь закрывает дочернее приложение, родительское приложение должно быть уведомлено, а новое значение должно быть , доступное в родительском приложении.

Теперь я совсем не уверен, как мы можем достичь этого простым способом? Архитектура не может быть изменена.

Большое спасибо. С уважением.

+0

Являются ли ваши значения числами или символами? – Damian

+0

Это был бы слишком широкий и оппинированный ответ. Существует несколько способов взаимодействия между процессами ... Я бы проверил [это] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa365574 (v = vs.85) .aspx) для руководства по началу работы. Для .NET и простой локальной (не-сетевой) связи я бы пошел на [Анонимные каналы] (https://msdn.microsoft.com/en-us/library/bb546102.aspx), но это просто оппонент – Jcl

+0

Я слышал, что мы можем использовать службу WCF? Я не знаю wcf, но то, что я знаю о службе WCF, заключается в том, что приложение будет иметь ссылку на службу wcf, которая вызовет метод MyMethod. Теперь MyMethod() выполняет некоторую функциональность, и как только функциональность закончится, служба wcf может сделать обратный вызов вызывающему приложению с результатом. Но в моем сценарии существует другой процесс запуска родительского приложения. В этом случае можно использовать wcf-сервис? – App

ответ

0

Я слышал, что мы можем использовать службу WCF?

Я не знаю wcf, но то, что я знаю о службе WCF, заключается в том, что приложение будет иметь ссылку на службу wcf, которая вызовет метод MyMethod. Теперь MyMethod() выполняет некоторую функциональность, и как только функциональность закончится, служба wcf может сделать обратный вызов вызывающему приложению с результатом.

Но в моем сценарии существует другой процесс запуска родительского приложения. В этом случае можно использовать wcf-сервис?

0

Насколько сложные и/или большие значения, которые вы отправляете?

Если вы хотите, вы можете использовать MSMQ или RabbitMQ (ссылки указывают на учебные пособия). IMO, это прилично для больших сообщений и будет оставаться там, если ваше приложение выйдет из строя, сообщение все равно будет там в ожидании следующего раза.

Или для старой школы подхода на основе значений целочисленных, SendMessage API с помощью WM_APP + (пользовательского индекса) в качестве типа сообщения.

0

Существует несколько способов сделать это. Ваше родительское приложение может опросить изменения в текстовом файле. Вы можете использовать сокет между родительским и дочерним процессами (вызов сетевой службы привязан к localhost). Вы можете написать в очередь сообщений.

+0

Ах, да, розетки! Когда я сделал ответ, это проскользнуло. Хорошее дополнение. – Damian

Смежные вопросы