Principale utente con più risposte
Esecuzione di programmi

Domanda
-
Salve,
Sto programmando una console application, per cercare di riprodurre una shell.
Vorrei far eseguire dei programmi ma, mentre il programma è in esecuzione (nel caso dei programmi che girano in ambiente DOS o dei file batch), continua a chiedermi di inserire un comando e funziona parallelamente al programma e vanno in confilitto con l'input dell'utente.
Ho provato ad usare System.Threading.Thread.Sleep(60000) ma, avendo un limite di tempo, inizia di nuovo il conflitto.
Come potrei dire alla mia shell di aspettare fino alla fine dell'esecuzione del programma?
Ringrazio in anticipo.
_Emanuele_
Risposte
-
Può darsi che usavi ProcessStartInfo. Puoi continuare a farlo:
Sub Main() Dim psi = New ProcessStartInfo("find.exe") psi.Arguments = "/?" psi.UseShellExecute = False Dim calc As New Process() calc.StartInfo = psi calc.Start() calc.WaitForExit() Console.WriteLine() Console.WriteLine("find.exe terminato.") Console.ReadKey() End Sub
- Modificato BlueLed domenica 19 marzo 2017 17:35
- Contrassegnato come risposta _Emanuele_ domenica 19 marzo 2017 17:45
Tutte le risposte
-
Per attendere la fine del programma lanciato con Process, puoi usare il metodo WaitForExit
Questo esempio lancia la calcolatrice ed attende che l'utente la chiuda:
Sub Main() Dim calc As Process = System.Diagnostics.Process.Start("calc.exe") calc.WaitForExit() Console.WriteLine("calc.exe terminato.") Console.ReadKey() End Sub
- Proposto come risposta Renato Marzaro [] domenica 19 marzo 2017 16:03
-
Grazie BlueLed, ora funziona tutto come desideravo
Solo un'altra domanda: prima le applicazioni console o i file batch mi venivano visualizzati nella stessa finestra del mio programma, ora invece me ne apre una a parte...
Come potrei fare?
_Emanuele_
-
Può darsi che usavi ProcessStartInfo. Puoi continuare a farlo:
Sub Main() Dim psi = New ProcessStartInfo("find.exe") psi.Arguments = "/?" psi.UseShellExecute = False Dim calc As New Process() calc.StartInfo = psi calc.Start() calc.WaitForExit() Console.WriteLine() Console.WriteLine("find.exe terminato.") Console.ReadKey() End Sub
- Modificato BlueLed domenica 19 marzo 2017 17:35
- Contrassegnato come risposta _Emanuele_ domenica 19 marzo 2017 17:45
-