J'écris une application console C# qui prend 2 paramètres: myprogram.exe param1 param2
C# - Console.In.ReadToEnd() se bloque sur l'entrée d'utilisateur si aucune donnée passepoilées au programme
param2
est facultative, et l'idée est si ce n'est pas présent, obtenir des données canalisé:
echo "hithere" | myprogram.exe param1
J'ai fait ce travail partiel en capturant Console.In.ReadToEnd()
quand seulement 1 paramètre est passé. Le problème auquel je suis confronté est quand seulement 1 paramètre est passé et aucune donnée n'est canalisée, il se trouve juste là écoutant l'entrée d'utilisateur et la seule manière de fermer est à Ctrl+C
pour terminer le programme. Au lieu de cela, existe-t-il un moyen de renvoyer une erreur et de quitter le programme si un seul paramètre a été fourni et qu'aucune donnée n'a été transmise?
Pour tester s'il y a quelque chose d'attente, je l'ai essayé d'utiliser:
Console.OpenStandardInput().CanRead
Console.OpenStandardInput().Length
Console.In.Peek()
Cela ne fonctionne pas.
J'ai également essayé le 'hack' mentionné au bas de cette question stackoverflow: C# Console receive input with pipe.
Des idées?
Si vous reformatez votre question pour qu'elle ne ressemble pas à un mur de texte, je pense que vous aurez plus de gens à le lire. –
Je suis d'accord avec Mark, c'est vraiment pénible à lire ... –
Je l'ai reformaté maintenant. J'espère que c'est moins intimidant à lire. – Matt