我使用.NET核心通用主机(而不是Web主机)来构建一个需要相当长时间正常关闭的控制台应用程序.来自的源代码
aspnet/Hosting/src/Microsoft.Extensions.Hosting/HostOptions
很明显,该ShutdownTimeout选项可用于更改作为参数提供的取消令牌中的关闭超时ShutdownAsync.默认情况下为5秒.
但是,我无法弄清楚在HostBuilder您通常放在Program.cs文件中的配置代码中编写代码以指定此选项的位置和方式.
有人可以发布一些代码来说明如何做到这一点吗?
为 Ubuntu 制作无休止的控制台应用程序 .NET Core 3.1 在 systemd 上作为服务运行的最佳实践是什么?
首先我试过:
static void Main()
{
//timers (System.Timers.Timer) initialization for background tasks
Console.ReadKey();
}
Run Code Online (Sandbox Code Playgroud)
它不能作为 systemd 上的服务工作,因为:
System.InvalidOperationException:当任一应用程序没有控制台或控制台输入已被重定向时,无法读取密钥。
然后我尝试更改Console.ReadKey()为,while(true) {}但它使 CPU 使用率为 100%。