Поделиться через


SYSLIB0054: Thread.VolatileRead и Thread.VolatileWrite устарели

Все перегрузки и Thread.VolatileWrite методы устарелиThread.VolatileRead, начиная с .NET 9. При вызове их в коде выдается предупреждение SYSLIB0054 во время компиляции.

Причина обсоления

Платформа .NET Framework реализации 64-разрядных перегрузок Thread.VolatileRead и Thread.VolatileWrite методов некорректной атомарности. В .NET (Core) реализация была изменена на делегирование Volatile.Read на и Volatile.Writeсоответственно, что обеспечивает правильную семантику приобретения и выпуска. Кроме того, методы в Thread классе не включают перегрузку, которая принимает логический аргумент, а Volatile методы выполняются. Эти методы устарели для поощрения использования Volatile методов.

Обходное решение

Вызов Volatile.Read или Volatile.Write вместо этого.

Отключение предупреждений

Если необходимо использовать устаревшие API, вы можете отключить предупреждение в коде или в файле проекта.

Чтобы отключить только одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить предупреждение.

// Disable the warning.
#pragma warning disable SYSLIB0054

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

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

Чтобы отключить все SYSLIB0054 предупреждения в проекте, добавьте <NoWarn> свойство в файл проекта.

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

Дополнительные сведения см. в разделе Отключение предупреждений.