【发布时间】:2016-03-14 22:23:56
【问题描述】:
我在 Linux(Raspbian Jessye、Raspberry Pi 2)下的 Mono 4.1 上的控制台应用程序上看到了一种奇怪的行为。
考虑这个程序:
static void Main(string[] args)
{
Console.Clear();
while (true)
{
if (Console.KeyAvailable)
{
Console.ReadKey();
return;
}
Thread.Sleep(500);
Console.SetCursorPosition(0, 0);
Console.WriteLine(DateTime.Now.ToString());
}
}
它应该更新屏幕上的日期,直到按下一个键。它可以工作,在接近 10 分钟的一段时间内(几乎准确的 10 分钟,在我看来,这是一个巧合的整数......),但之后输出冻结,但程序继续运行。
我已经测试了一切,似乎没有键盘输入,一段时间后控制台停止刷新,按任何键后控制台再次开始工作一段时间,然后再次冻结。
显然,当按下一个键时,这个测试程序会停止,但在我的真实程序中,输入被消耗,因为我知道控制台在任何按键按下后都会再次工作(我只是消耗它,我不做任何事情输入)。此外,我还检查了是否按下任何其他键,例如 lock num,它还在示例和实际程序中继续工作。
这是一个已知的错误吗?预期的行为?
有什么解决方法吗?我正在创建一个控制台应用程序,它监控一些服务,当我想查看真实数据时不得不按键非常烦人。
【问题讨论】:
标签: c# linux mono console raspberry-pi