Compartilhar via


SYSLIB0054: Thread.VolatileRead e Thread.VolatileWrite estão obsoletos

Todas as sobrecargas dos métodos Thread.VolatileRead e Thread.VolatileWrite estão obsoletas, desde o .NET 9. Chamá-los no código gera aviso SYSLIB0054 em tempo de compilação.

Motivo da obsolescência

A implementação do .NET Framework das sobrecargas de 64 bits dos métodos Thread.VolatileRead e Thread.VolatileWrite tinha atomicidade incorreta. No .NET (Core), a implementação foi alterada para delegar aos métodos Volatile.Read e Volatile.Write, respectivamente, que fornecem a semântica adequada de aquisição/liberação. Além disso, os métodos na classe Thread não incluem uma sobrecarga que aceite um argumento booleano, enquanto os métodos Volatile o fazem. Os métodos foram obsoletos para incentivar o uso dos métodos Volatile.

Solução alternativa

Em vez disso, chame Volatile.Read ou Volatile.Write.

Suprimir um aviso

Se for necessário usar as APIs obsoletas, você poderá suprimir o aviso no código ou no arquivo de projeto.

Para suprimir apenas uma violação única, adicione as diretivas de pré-processador ao arquivo de origem para desabilitar e, em seguida, reabilite o aviso.

// Disable the warning.
#pragma warning disable SYSLIB0054

// Code that uses obsolete API.
// ...

// Re-enable the warning.
#pragma warning restore SYSLIB0054

Para suprimir todos os avisos SYSLIB0054 no projeto, adicione uma propriedade <NoWarn> ao arquivo de projeto.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
   ...
   <NoWarn>$(NoWarn);SYSLIB0054</NoWarn>
  </PropertyGroup>
</Project>

Para obter mais informações, confira Suprimir avisos.