Piszę aplikację konsoli C#, który trwa 2 parametry: myprogram.exe param1 param2
C# - Console.In.ReadToEnd() zawiesza się na danych wprowadzonych przez użytkownika, jeśli nie ma danych rurami zaprogramować
param2
jest opcjonalny, a chodzi o to, czy to nie jest obecny, uzyskać dane rurami:
echo "hithere" | myprogram.exe param1
zrobiłem to praca w niepełnym wymiarze poprzez przechwytywanie Console.In.ReadToEnd()
gdy tylko 1 parametr jest przekazywana.
Problem, przed którym stoję, to sytuacja, w której przekazywany jest tylko jeden parametr i żadne dane nie są przesyłane, po prostu siedzi tam, słuchając danych wprowadzanych przez użytkownika, a jedynym sposobem zamknięcia jest Ctrl+C
, aby zakończyć program.
Zamiast tego, czy istnieje sposób na zwrócenie błędu i wyjście z programu, jeśli podano tylko jeden parametr i nie wysłano żadnych danych?
Aby sprawdzić, czy jest coś czeka, próbowałem przy użyciu:
Console.OpenStandardInput().CanRead
Console.OpenStandardInput().Length
Console.In.Peek()
To nie działa.
Próbowałem również "hack" wymienionych na dole tego pytanie stackoverflow: C# Console receive input with pipe.
Wszelkie pomysły?
Jeśli ponownie sformatujesz pytanie, aby nie wyglądało to jak ściana tekstu, myślę, że dostaniesz więcej ludzi do przeczytania. –
Zgadzam się z Markiem, naprawdę trudno jest przeczytać ... –
Sformatowałem to teraz. Mam nadzieję, że nie będzie to trudniejsze do odczytania. – Matt