这是代码:
ConsoleKeyInfo cki;
while((cki = Console.ReadKey(true)).Key != ConsoleKey.Escape)
{
Console.WriteLine(cki.Key);
}
当我使用 dotnet run 从 cmd 或 powershell 运行它时,一切正常。但是,当我从 Git Bash 运行它时,它会抛出以下异常:
未处理的异常。 System.InvalidOperationException:当任一应用程序没有控制台或控制台输入已重定向时,无法读取键。尝试控制台.Read。
那么,据推测,Git Bash 正在使用 IO 重定向——这是允许的——而其他的……则不允许。那么解决方案是使用Read
而不是ReadKey
- 至少在进行重定向时是这样。你或许可以detect这个通过Console.IsInputRedirected
- 并为可能的情况选择最有用的策略,但是:您将无法检测到keys以同样的方式,因此在这种情况下您可能需要略有不同的用户体验。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)