【问题标题】:C# Mono console app stops output if no key input如果没有键输入,C# Mono 控制台应用程序将停止输出
【发布时间】: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


    【解决方案1】:

    好的,将我的搜索定向到 linux 和 raspberry 而不是 mono 和 C# 我发现了我的问题。

    它来自两个来源,我附加的屏幕和 linux 控制台空白。

    我有一个连接到 rpi 的 SPI 屏幕,它的驱动程序似乎编程很糟糕,它们有一些错误,其中一个没有响应消隐(也许 SPI 屏幕不知道它?不知道)所以当我看到控制台没有响应是因为它是空白的并且没有写入输出时,我只是没有注意到,因为屏幕根本没有清除。

    而且空白,似乎 Debian 有一个错误,甚至按照 here 的描述配置 /etc/kbd/config 和 /boot/config.txt 也没有用,但是发出 sudo sh -c "TERM =linux setterm -blank 0 >/dev/tty0" 如上一个链接所述确实有效,因此我创建了一个脚本来启动我的应用程序,现在它可以工作了。

    【讨论】:

      猜你喜欢
      • 2018-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-20
      • 2019-12-01
      • 2010-09-14
      相关资源
      最近更新 更多