Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Em sistemas Unix, o runtime do .NET não fornece mais um manipulador de sinal SIGTERM padrão. No Windows, o runtime do .NET não fornece mais manipuladores padrão para o e CTRL_SHUTDOWN_EVENT osCTRL_CLOSE_EVENT sinais, que são equivalentes de Unix SIGTERM e SIGHUP sinais.
Essa alteração reverte o comportamento de tratamento de sinal de terminação para o que costumava ser no .NET Framework e no runtime clássico do Mono.
Versão introduzida
.NET 10
Comportamento anterior
Anteriormente, os manipuladores de sinal de terminação registrados pelo runtime do .NET por padrão disparavam a saída normal do aplicativo. Eventos AppDomain.ProcessExit e AssemblyLoadContext.Unloading foram gerados antes da saída do aplicativo.
Novo comportamento
A partir do .NET 10, o runtime do .NET não substitui o tratamento de sinal de terminação fornecido pelo sistema operacional. O manipulador de sinal de terminação padrão típico fornecido pelo sistema operacional encerra o aplicativo imediatamente. Eventos AppDomain.ProcessExit e AssemblyLoadContext.Unloading não são gerados.
Tipo de mudança disruptiva
Essa é uma mudança comportamental.
Motivo da alteração
Os manipuladores de sinal de terminação registrados pelo runtime do .NET por padrão eram insuficientes para alguns modelos de aplicativo (por exemplo, console e aplicativos em contêineres) e incompatíveis com outros modelos de aplicativo (por exemplo, serviços do Windows). É melhor deixá-lo para bibliotecas de nível superior ou código de aplicativo para registrar manipuladores de sinal apropriados para o modelo de aplicativo especificado.
Ação recomendada
Nenhuma ação é necessária para aplicativos ASP.NET típicos ou para aplicativos que usam APIs de nível superior, como HostingHostBuilderExtensions.UseConsoleLifetime, para lidar com preocupações específicas do modelo de aplicativo. Essas APIs de nível superior registram manipuladores para SIGTERM e outros sinais conforme apropriado.
Se você quiser lidar com sinais de terminação sem depender de bibliotecas de nível superior, poderá replicar o comportamento anterior criando manipuladores de sinal de terminação em seu
Mainmétodo usando a PosixSignalRegistration.Create API:
static void Main()
{
using var termSignalRegistration =
PosixSignalRegistration.Create(
PosixSignal.SIGTERM,
(_) => Environment.Exit(0));
// Replicates the previous behavior on Windows
using var sigHupSignalRegistration =
PosixSignalRegistration.Create(
PosixSignal.SIGHUP,
(_) => Environment.Exit(0));
// Your application code here
}