Esegui l’applicazione console da un’altra app della console

Ho un’applicazione console C # (A). Voglio eseguire un’altra app per console (B) dall’app A (in modo sincrono) in modo tale che B usi la stessa finestra di comando. Quando B esiste, A dovrebbe essere in grado di leggere il codice di uscita di B.

Come farlo? Ho solo bisogno di questo piccolo consiglio su come eseguire questa altra app nella stessa finestra di cmd.

È ansible utilizzare Process.Start per avviare l’altra applicazione della console.

Dovrai build il processo con ProcessStartInfo.RedirectOutput impostato su true e UseShellExecute impostato su false per poter utilizzare tu stesso l’output.

È quindi ansible leggere l’output utilizzando StandardOutput.ReadToEnd sul processo.

È ansible avviare un altro processo utilizzando la chiamata Process.Start() . Gli esempi qui mostrano come leggere l’output di altri processi e attendere che finisca.

È ansible avviare un altro processo con Process.Start – non importa se si tratta di un’app console o meno. Se la tua app è già in esecuzione in una finestra della console, l’app appena generata utilizzerà anche quella finestra della console.

 var proc = Process.Start( "...path to second app" ); proc.WaitForExit(); var exitCode = proc.ExitCode; 

Assicurati di preparare i documenti nella class Process in quanto ci sono una serie di piccole sfumature che possono influire sul modo in cui viene lanciata l’app secondaria.

Sono stato in grado di eseguire il programma ‘B’ come parte della stessa finestra di comando chiamando la seguente configurazione:

 ConsoleColor color = Console.ForegroundColor; ProcessStartInfo startinfo = new ProcessStartInfo(nameProgramB); startinfo.CreateNoWindow = false; startinfo.UseShellExecute = false; Process p = Process.Start(startinfo); p.WaitForExit(); Console.ForegroundColor = color; 

in questo modo, entrambi i programmi funzionano come se fossero un unico programma. ‘nameProgramB’ è il nome per programmare ‘B’. Spero che questo ti aiuti.

Compila un System.Diagnostics.ProcessStartInfo e passalo a Process.Start

È ansible WaitForExit sul processo risultante e utilizzare quindi utilizzare la proprietà ExitCode del processo per visualizzare il valore restituito.

puoi “avvolgere” la vecchia app della console con quella nuova includendola nei tuoi riferimenti e avviarla chiamando qualunque metodo venga chiamato nel metodo run della class del programma