Jeśli skompiluję ten kod C# do pliku EXE i uruchomię go w powłoce poleceń systemu Windows, działa on poprawnie: wyprowadza monity, czeka w tym samym wierszu dla niektórych danych wprowadzonych przez użytkownika, a następnie wpisuje, echo tego wejścia. Działa w powłoce PowerShell v3 również działa dobrze. Jeśli jednak uruchomię ten sam plik EXE w programie PowerShell ISE V3, to nigdy nie będzie on emitował danych wyjściowych z Write
i wisi na urządzeniu ReadLine
. (Tak na marginesie, to będzie emitować sygnał wyjściowy z Write
jeśli jest później następuje WriteLine
.)Dlaczego PowerShell ISE jest zawieszony w tym programie C#?
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
System.Console.Write("invisible prompt: ");
var s = System.Console.ReadLine();
System.Console.WriteLine("echo " + s);
}
}
}
Czy to jest bug ISE czy jest jakiś majątek, aby dostosować, aby to działało ...?
Nie jestem pewien, czy jest to istotne, ale w Powershell czasem nazywa się * Pobieranie z klawiatury *, które może zaimplementować pewne problemy. Więc być może, gdy 'Console.ReadLine()' zostanie wywołana z powodu Powershell, używając tego pollingu może być przyczyną konfliktu. – Greg