Szenario Folgende:Detect Console.ReadLine()
ich eine Konsole-Anwendung mit folgenden Code haben:
static void Main(string[] args)
{
// Some code.
Console.WriteLine("Done");
Console.ReadLine();
}
Die Anwendung erfolgreich gebaut und "Test.exe" erzeugt wird.
Jetzt habe ich eine andere Konsolenanwendung, die die generierte exe ausführt.
static void Main(string[] args)
{
var processStartInfo = new ProcessStartInfo("Test.exe")
{
UseShellExecute = false,
RedirectStandardOutput = true
};
// Setup the process
process = new Process { StartInfo = processStartInfo, EnableRaisingEvents = true };
process.OutputDataReceived += ProcessOnOutputDataReceived;
process.Start();
process.BeginOutputReadLine();
// Detect here if application is completed.
}
Console.ReadLine();
}
private static void ProcessOnOutputDataReceived(object sender, DataReceivedEventArgs dataReceivedEventArgs)
{
Console.WriteLine(dataReceivedEventArgs.Data);
}
Wenn ich den obigen Code auszuführen, ruft die „Test.exe“ und die Ausgabe von „Test.exe“ wird in dem Konsolenfenster des aktuellen Prozesses angezeigt.
"Test.exe" wartet auf Eingabe bei "Console.ReadLine()" und der aktuelle Prozess wartet auf "Test.exe" zu beenden.
Kann festgestellt werden, ob "Test.exe" auf eine Eingabe im aktuellen Prozess wartet?
Duplikat von http://Stackoverflow.com/q/40421394/1132334, aber das wurde auch nicht beantwortet – dlatikay
Sie könnten einfach nach der Fertigmeldung suchen, ja? – itsme86
http://StackOverflow.com/a/14510536/1132334: in diesem Zusammenhang 'ThreadWaitReason' zu untersuchen kann einen Versuch wert sein – dlatikay