SYSLIB0006. Thread.Abort не поддерживается

Следующие API помечены как устаревшие, начиная с версии .NET 5. При использовании этих API создаются предупреждение SYSLIB0006 во время компиляции и исключение PlatformNotSupportedException во время выполнения.

При вызове Thread.Abort прерывания потока, отличного от текущего потока, вы не знаете, какой код выполнил или не удалось выполнить при ThreadAbortException возникновении. Вы также не можете быть уверены в состоянии приложения или любого приложения и пользовательского состояния, которое оно отвечает за сохранение. Например, вызов Thread.Abort может препятствовать выполнению статических конструкторов или выпуску управляемых или неуправляемых ресурсов. По этой причине Thread.Abort всегда создает исключение PlatformNotSupportedException для .NET Core и .NET 5+.

Методы обхода проблемы

Используйте CancellationToken, чтобы прервать обработку единицы работы вместо вызова Thread.Abort. В следующем примере демонстрируется применение 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);
    }
}

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

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

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

// Disable the warning.
#pragma warning disable SYSLIB0006

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

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

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

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

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

См. также