SYSLIB0006: A Thread.Abort nem támogatott

A következő API-k elavultnak vannak megjelölve, kezdve a .NET 5-tel. Ezeknek az API-knak a használata figyelmeztetést SYSLIB0006 generál fordításkor és PlatformNotSupportedException futásidőben.

Amikor az aktuális száltól eltérő szál megszakítására hívja meg a hívást Thread.Abort , nem tudja, hogy milyen kódot hajtottak végre, vagy nem sikerült végrehajtani a ThreadAbortException dobáskor. Nem lehetsz biztos az alkalmazás állapotában vagy bármely olyan állapotban, amelyet az alkalmazásnak és a felhasználónak meg kell őriznie. A hívás Thread.Abort például megakadályozhatja a statikus konstruktorok végrehajtását, illetve a felügyelt vagy nem felügyelt erőforrások kiadását. Ezért Thread.Abort mindig dob egy PlatformNotSupportedException-et a .NET Core-on és a .NET 5+-on.

Áthidaló megoldások

Használjon egy CancellationToken a munkaegység feldolgozásának megszakítására a Thread.Abort hívása helyett. Az alábbi példa szemlélteti a CancellationToken használatát.

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);
    }
}

Figyelmeztetés mellőzése

Ha az elavult API-kat kell használnia, letilthatja a figyelmeztetést a kódban vagy a projektfájlban.

Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz, hogy letiltsa, majd engedélyezze újra a figyelmeztetést.

// Disable the warning.
#pragma warning disable SYSLIB0006

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

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

Ha el szeretné tiltani a projekt összes SYSLIB0006 figyelmeztetését, adjon hozzá egy <NoWarn> tulajdonságot a projektfájlhoz.

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

További információ: Figyelmeztetések letiltása.

Lásd még