2015-02-27 2 views
0

Я пытаюсь найти надежный способ запуска консольного приложения из родительского процесса и вернуть консольное приложение к родительскому процессу. Таким образом, одним из способов, я думал, возможно, было запустить консольное приложение через объект Process, и приложение изменит какое-либо свойство с сообщением результата, которое можно проверить. Я не знаю, возможно ли это, или как вы можете получить доступ к родительскому объекту процесса, который создавал экземпляр этого экземпляра. Или, если есть лучший способ сделать это.Приложение .NET Console Как передать результат через объект Process?

Я пишу в VB.NET Visual Studio 2010, .NET Framework 3.5.

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

+0

Ну, вы можете просто написать на консоль и позволить «родительскому» процессу читать вывод «дочернего» процесса. Это немного боль, но это определенно возможно. Или вы можете сделать это через сокеты или именованные каналы ... –

ответ

0

Спасибо, Джон Скит, это привело меня к ответу, который работает. Ниже приведен пример кода, который работает:

Dim retrieveArgs As String 
    'Set up arguments to pass 
    retrieveArgs = "-A -B -C" 
    Dim si As New ProcessStartInfo 
    si.FileName = Request.PhysicalApplicationPath & "MyUtility.exe" 
    si.Arguments = retrieveArgs 
    si.CreateNoWindow = True 
    si.UseShellExecute = False 
    'NOTE: You have to redirect StdOut 
    si.RedirectStandardOutput = True 
    Dim p As Process = Process.Start(si) 

    p.WaitForExit() 

    Dim result As String = "" 
    While Not p.StandardOutput.EndOfStream 
     result = p.StandardOutput.ReadLine 
     Logger.WriteLine(fxName, result, Log.MessageTypeEnum.InfoType) 
    End While