다음을 통해 공유


SYSLIB0006: Thread.Abort는 지원되지 않습니다.

다음 API는 .NET 5부터 사용되지 않는 것으로 표시됩니다. 이러한 API를 사용하면 컴파일 시간 및 런타임에 경고 SYSLIB0006PlatformNotSupportedException 생성됩니다.

현재 스레드가 아닌 다른 스레드를 중단하도록 호출 Thread.Abort 할 때 어떤 코드가 실행되었거나 throw될 때 ThreadAbortException 실행하지 못했는지 알 수 없습니다. 또한 애플리케이션의 상태 또는 유지를 담당하는 애플리케이션 및 사용자 상태를 확신할 수 없습니다. 예를 들어 호출 Thread.Abort 은 정적 생성자의 실행 또는 관리되는 리소스 또는 관리되지 않는 리소스의 릴리스를 방지할 수 있습니다. 이러한 이유로 Thread.Abort는 .NET Core와 .NET 5 이상에서는 PlatformNotSupportedException을 throw합니다.

해결 방법

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>

자세한 내용은 경고 표시 안 함을 참조하세요.

참고하십시오