Je démarre un processus dans mon application C# qui exécute une application console. J'ai redirigé l'entrée et la sortie standard, et suis capable de lire quelques lignes via StandardOutput.ReadLine(). Je suis convaincu que j'ai le ProcessStartInfo configuré correctement.StandardOutput.EndOfStream se bloque
L'application de la console, au démarrage, les sorties quelques lignes (se terminant par une ligne « marqueur ») et attend l'entrée. Après réception de l'entrée, il sort à nouveau quelques lignes (se terminant à nouveau par une ligne "marker"), et ainsi de suite. Mon intention est d'en lire les lignes jusqu'à ce que je reçoive la ligne "marker", à quel point je sais envoyer la chaîne d'entrée appropriée.
Mon problème est que, après plusieurs itérations, le programme se bloque. La suspension du débogueur a tendance à placer le blocage dans un appel à StandardOutput.EndOfStream. Tel est le cas dans le code de test suivant:
while (!mProcess.StandardOutput.EndOfStream) // Program hangs here.
{
Console.WriteLine(mProcess.StandardOutput.ReadLine());
}
Quand je teste pour la ligne « marqueur », je reçois le même genre de se bloquer si je tente d'accéder StandardOutput.EndOfStream après avoir lu la ligne:
Qu'est-ce que je pourrais faire pour que cette propriété fonctionne si horriblement?string line = "";
while (!isMarker(line))
{
line = mProcess.StandardOutput.ReadLine();
}
bool eos = mProcess.StandardOutput.EndOfStream; // Program hangs here.
Non; l'intention est d'interagir avec l'application console. – TreDubZedd