gpt4 book ai didi

c# - 从终端分离时如何为单声道制作 cpu 友好的无限循环

转载 作者:太空宇宙 更新时间:2023-11-03 21:16:15 24 4
gpt4 key购买 nike

我一直在我的自托管 ServiceStack 应用程序中使用这段代码来休眠 MainThread:

while (true)
{
Console.ReadKey();
}

但是当应用程序从终端分离时它不起作用(例如由 start-stop-daemon 启动)因为这个错误:https://bugzilla.novell.com/show_bug.cgi?id=689976

作为快速解决方法,我已将代码更改为:

while (true)
{
Thread.Sleep(100);
}

我已经看到 Thread.Sleep 不应该这样使用。

当应用程序从终端分离并在单声道上运行时,我如何正确地卡住主线程?

最佳答案

如果您使用的是 linux(或其他 posix 系统),您应该使用 Mono.Posix 库而不是使用 Console.ReadKey 来监听终止或终止信号,如 ServiceStack wiki 上的 example 所示:

        UnixSignal [] signals = new UnixSignal[] { 
new UnixSignal(Signum.SIGINT),
new UnixSignal(Signum.SIGTERM),
};

// Wait for a unix signal
for (bool exit = false; !exit; )
{
int id = UnixSignal.WaitAny(signals);

if (id >= 0 && id < signals.Length)
{
if (signals[id].IsSet) exit = true;
}
}

关于c# - 从终端分离时如何为单声道制作 cpu 友好的无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34113160/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com