Mono控制台应用程序作为守护进程占用100%的cpu
本文关键字:100% cpu 进程 守护 控制台 应用程序 Mono | 更新日期: 2023-09-27 18:24:57
我有一个控制台应用程序(我知道它应该是一个服务),末尾有一个循环,所以它永远不会停止:
while (true)
{
Console.ReadLine();
}
它在树莓派上使用单声道完美运行(树莓喘息),但由于我与树莓杰西一起升级到了Pi 2,它在作为精灵启动时使用100%的cpu。
Readline()似乎总是返回一个空行。知道吗?我的init.d脚本对于测试来说非常简单:
cd /myAppDir/
mono MyApp.exe &
exit 0
我尝试了nohup,最后有/没有&
,没有成功
[编辑]我不能使用线程。睡眠,因为我有一个定时器池UART。一个简单的解决方案是为所有工作创建另一个线程,只在主线程中执行Sleep,但我想理解为什么它不能像一样工作
当作为守护程序启动时,它使用100%的cpu。
我不知道您是如何作为守护进程启动进程的,但通常情况下,守护进程会将stdin
重定向到/dev/null
。
零设备立即产生EOF,因此Console.ReadLine()
永远不会阻塞。
我想(我没有Raspbian),运行守护程序的方式从Raspbian Wheezy变成了Jessie。
您只需要在完成Main(string[]args)之前完成此操作
private static void Main(string[] args)
{
//call method for daemon before while
while (true)
{
Thread.Sleep(1000);
}
}
有了这个,你的应用程序不会占用100%的CPU使用率