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


SYSLIB0059: Обратные вызовы SystemEvents.EventsThreadShutdown не выполняются до завершения процесса

Событие SystemEvents.EventsThreadShutdown устарело, начиная с .NET 10. Ссылка на это событие в коде создает предупреждение SYSLIB0059 во время компиляции.

Причина устаревания

Ранее обработка завершения работы в SystemEvents могла блокировать поток финализатора при завершении работы приложения. Чтобы избежать блокировки финализирующего потока, SystemEvents больше не имеет обработки завершения работы системы, что означает, что событие SystemEvents.EventsThreadShutdown больше не вызывается. Чтобы выделить это изменение поведения, событие было помечено как устаревшее.

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

Вместо этого используйте AppDomain.ProcessExit.

Подавление предупреждения

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

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

// Disable the warning.
#pragma warning disable SYSLIB0059

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

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

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

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

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