SYSLIB0006: Thread.Abort wordt niet ondersteund
De volgende API's zijn gemarkeerd als verouderd, te beginnen in .NET 5. Het gebruik van deze API's genereert een waarschuwing SYSLIB0006
tijdens het compileren en een PlatformNotSupportedException tijdens runtime.
Wanneer u een andere thread dan de huidige thread aanroept Thread.Abort , weet u niet welke code is uitgevoerd of niet kan worden uitgevoerd wanneer de ThreadAbortException thread wordt gegenereerd. U kunt ook niet zeker zijn van de status van uw toepassing of een toepassing en gebruikersstatus dat deze verantwoordelijk is voor het behoud. Aanroepen Thread.Abort kunnen bijvoorbeeld voorkomen dat statische constructors of de release van beheerde of onbeheerde resources worden uitgevoerd. Thread.Abort Daarom gooit u altijd een PlatformNotSupportedException .NET Core en .NET 5+.
Tijdelijke oplossingen
Gebruik een CancellationToken om de verwerking van een werkeenheid af te breken in plaats van aan te roepen Thread.Abort. In het volgende voorbeeld ziet u het gebruik van 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);
}
}
Een waarschuwing onderdrukken
Als u de verouderde API's moet gebruiken, kunt u de waarschuwing in code of in het projectbestand onderdrukken.
Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de waarschuwing uit te schakelen en vervolgens opnieuw in te schakelen.
// Disable the warning.
#pragma warning disable SYSLIB0006
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0006
Als u alle SYSLIB0006
waarschuwingen in uw project wilt onderdrukken, voegt u een <NoWarn>
eigenschap toe aan het projectbestand.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0006</NoWarn>
</PropertyGroup>
</Project>
Zie Waarschuwingen onderdrukken voor meer informatie.