Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
As Thread.Abort APIs estão obsoletas. Projetos destinados ao .NET 5 ou uma versão posterior encontrarão aviso SYSLIB0006 em tempo de compilação se esses métodos forem chamados.
Alterar descrição
Anteriormente, as chamadas para Thread.Abort não produziam avisos em tempo de compilação, no entanto, o método lançava um PlatformNotSupportedException em tempo de execução.
A partir do .NET 5, Thread.Abort é marcado como obsoleto como aviso. Chamar este método produz um aviso do compilador SYSLIB0006. A implementação do método permanece inalterada e continua a lançar um PlatformNotSupportedException.
Motivo da mudança
Dado que Thread.Abort sempre lança um PlatformNotSupportedException em todas as implementações .NET, exceto .NET Framework, ObsoleteAttribute foi adicionado ao método para chamar a atenção para os locais onde ele é chamado.
Quando você chama Thread.Abort para anular um thread diferente do thread atual, você não sabe qual código foi executado ou falhou em executar quando o ThreadAbortException é lançado. Você também não pode ter certeza do estado do seu aplicativo ou de qualquer aplicativo e estado do usuário que ele é responsável pela preservação. Por exemplo, a chamada Thread.Abort pode impedir a execução de construtores estáticos ou a liberação de recursos gerenciados ou não gerenciados. Por esse motivo, Thread.Abort sempre lança um PlatformNotSupportedException no .NET Core e .NET 5+.
Versão introduzida
5.0
Ação recomendada
Use a CancellationToken para cancelar o processamento de uma unidade de trabalho em vez de chamar Thread.Abort. O exemplo a seguir ilustra o uso de CancellationToken.
void ProcessPendingWorkItemsNew(CancellationToken cancellationToken) { if (QueryIsMoreWorkPending()) { // If the CancellationToken is marked as "needs to cancel", // this will throw the appropriate exception. cancellationToken.ThrowIfCancellationRequested(); WorkItem work = DequeueWorkItem(); ProcessWorkItem(work); } }Para obter mais informações, consulte Cancelamento em threads gerenciados.
Para suprimir o aviso em tempo de compilação, suprima o código
SYSLIB0006. O código de aviso é específico para Thread.Abort e suprimi-lo não suprime outros avisos de obsolescência no seu código. No entanto, recomendamos que você remova as chamadas para Thread.Abort em vez de suprimir o aviso.void MyMethod() { #pragma warning disable SYSLIB0006 Thread.CurrentThread.Abort(); #pragma warning restore SYSLIB0006 }Você também pode suprimir o aviso no arquivo de projeto.
<PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net5.0</TargetFramework> <!-- Disable "Thread.Abort is obsolete" warnings for entire project. --> <NoWarn>$(NoWarn);SYSLIB0006</NoWarn> </PropertyGroup>