C# 作为守护进程的Mono控制台应用程序占用100%的cpu

C# 作为守护进程的Mono控制台应用程序占用100%的cpu,c#,mono,C#,Mono,我有一个控制台应用程序(我知道它应该是一个服务),在末尾有一个循环,所以它永远不会停止: while (true) { Console.ReadLine(); } 它在使用mono(raspbian wheezy)的Raspberry Pi上运行得非常完美,但由于我使用raspbian Jessie升级到了Pi 2,所以它作为守护进程启动时使用100%的cpu Readline()似乎总是返回一个空行。有什么想法吗?出于测试目的,我的init.d脚本非常简单: cd /myAppDir

我有一个控制台应用程序(我知道它应该是一个服务),在末尾有一个循环,所以它永远不会停止:

while (true)
{
    Console.ReadLine();
}
它在使用mono(raspbian wheezy)的Raspberry Pi上运行得非常完美,但由于我使用raspbian Jessie升级到了Pi 2,所以它作为守护进程启动时使用100%的cpu

Readline()似乎总是返回一个空行。有什么想法吗?出于测试目的,我的init.d脚本非常简单:

cd /myAppDir/
mono MyApp.exe &
exit 0
我试过使用nohup,最后有/没有
&
,但没有成功

[编辑] 我不能使用线程。睡眠,因为我有一个定时器池UART。一个简单的解决方案是为所有工作创建另一个线程,只在主线程中执行睡眠,但我想理解为什么它不能这样工作

作为守护进程启动时,它使用100%的cpu

我不知道作为守护进程如何启动进程,但通常,守护进程会将
stdin
重定向到
/dev/null

Null设备立即产生EOF,因此
Console.ReadLine()
永远不会阻塞


我猜(我没有Raspbian),运行守护进程的方式从Raspbian Wheezy变为Jessie。

您只需要在完成Main(string[]args)之前使用它


有了它,你的应用程序将不会占用100%的CPU使用率,这就是我所想的,这就是为什么我惊讶地看到它能处理喘息。。。谢谢这是一个老问题,但如果你仔细阅读,你会发现我说“我不能使用线程。睡眠是因为……”。我们所有的项目现在都使用.NETCore
private static void Main(string[] args)
{
     //call method for daemon before while
     while (true)
     {
          Thread.Sleep(1000);
     }
}