2015-05-22 3 views
0

Я пытаюсь установить связь между двумя программами, но я не могу узнать, как это сделать.Общайтесь между двумя процессами

Process p = Process.Start(Secondprogram.exe, "number = " + number); 
p.WaitForExit(); 
this.Close(); 

Я хочу получить номер в моей второй программе и использовать его там.

Или что-то вроде:

Process p = Process.Start(Secondprogram.exe); 
Parameter number = 1200; 
p.WaitForExit(); 
this.Close(); 

А потом в моей второй программе:

txtSomething.Text = number; 
+0

зависит от программы. вы можете попытаться прочитать поток из процесса .... –

+0

Вам нужно общаться только с первого на второй процесс или также в обратном направлении? – Codor

+0

Только с первого по второй прогресс – robbii15

ответ

3

У вас есть несколько вариантов:

  • Использование WCF позволит вам переключаться между креплениями легко. Поэтому, если у вас есть два процесса на одном компьютере, вы можете использовать привязку нумерации с именем pipe, которая является типом межпроцессного взаимодействия. Если позже вы решите отдельные процессы на разных машинах, вы можете просто изменить конфигурацию, скажем, ТСР связывания и все будет продолжать работать

  • Если вы в REST, будут структуры клиент-сервер, например, как резидентных ASP NET Web API или Nancy

  • Если это что-то мертв просто, вы можете просто записать в файл и чтение из файла, в сочетании с глобальным именем мьютекса для синхронизации доступа

  • Eсть также выбор файла с отображением памяти, где один процесс записывает в файл, а другой - из Это. Это немного подлый подход, и я редко видел это в использовании.

  • Или еще один традиционный подход заключается в использовании 3-й партии, такие как базы данных или системы очередей сообщений

1

Вы можете использовать выходной поток первой программы в качестве входного потока второго. Проверьте ProcessStartInfo: https://msdn.microsoft.com/fr-fr/library/system.diagnostics.processstartinfo%28v=vs.110%29.aspx

+0

Это интересный подход. Не могли бы вы привести пример? У меня есть такой ситуэт, где я запускаю другой процесс с ProcessStartInfo.Будет ли он работать, если я не буду ждать, пока начатый процесс исчезнет? – t3chb0t

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