2010-03-11 3 views
2

Мне нужно позвонить из моего кода для какой-либо другой программы., делая синхронные вызовы для других приложений

И мне нужно подождать, пока он закончится (синхронный звонок).

Как я могу это сделать?

Спасибо, много.

+0

Вы заинтересованы в межпроцессной связи, да? http://en.wikipedia.org/wiki/Inter-process_communication – FrustratedWithFormsDesigner

+0

Обе веб-службы и службы WCF поддерживают синхронную связь. Как это делает .Net. –

ответ

2

Попробуйте использовать метод WaitForExit.

Process p = new Process(); 
// Redirect the error stream of the child process. 
p.StartInfo.UseShellExecute = false; 
p.StartInfo.RedirectStandardError = true; 
p.StartInfo.FileName = "OtherProgram.exe"; 
p.StartInfo.Arguments = "My Arguments"; 
p.Start(); 
// Wait for the child process to exit. 
p.WaitForExit(); 
+0

Как я могу отправить аргументы? –

+0

Добавил его в код выше. Эта ссылка показывает пару различных способов сделать это: http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx –

0

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

Это может быть:

  • TCP/IP
  • HTTP
  • WCF
  • SharedMemory
  • Named Pipes

и многое другое. Все это позволяет подождать ответа.

Но специфика очень различна (как и когда вы будете использовать каждый), поэтому без подробностей о типе сообщений, которые вы пытаетесь достичь, не может быть более конкретным.

+0

Мне нужно только знать, что она закончила работу. –

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