SYSLIB0054: Thread.VolatileRead e Thread.VolatileWrite sono obsoleti
Gli overload dei metodi Thread.VolatileRead e Thread.VolatileWrite sono obsoleti, a partire da .NET 9. La loro chiamata nel codice genera un avviso SYSLIB0054
in fase di compilazione.
Motivo dell'obsolescenza
L'implementazione di .NET Framework degli overload a 64-bit dei metodi Thread.VolatileRead e Thread.VolatileWrite aveva un'atomicità non corretta. In .NET (Core), l'implementazione è cambiata per delegare rispettivamente a Volatile.Read e Volatile.Write, che forniscono una semantica di acquisizione/rilascio appropriata. Inoltre, i metodi nella classe Thread non includono un overload che accetta un argomento booleano, come fanno invece i metodi Volatile. I metodi erano obsoleti per incoraggiare l'uso dei metodi Volatile.
Soluzione alternativa
Chiamare invece Volatile.Read o Volatile.Write.
Eliminare un avviso
Se è necessario usare le API obsolete, è possibile eliminare l'avviso nel codice o nel file di progetto.
Per eliminare solo una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare l'avviso.
// Disable the warning.
#pragma warning disable SYSLIB0054
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0054
Per eliminare tutti gli avvisi SYSLIB0054
nel progetto, aggiungere una proprietà <NoWarn>
al file di progetto.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0054</NoWarn>
</PropertyGroup>
</Project>
Per altre informazioni, vedere Non visualizzare gli avvisi.