Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les API suivantes sont marquées obsolètes, à partir de .NET 5. L’utilisation de ces API génère un avertissement SYSLIB0006 au moment de la compilation et un PlatformNotSupportedException au moment de l’exécution.
Lorsque vous appelez Thread.Abort pour abandonner un thread autre que le thread actuel, vous ne savez pas quel code a exécuté ou n’a pas pu s’exécuter lors de la levée du ThreadAbortException thread. Vous ne pouvez pas non plus être certain de l’état de votre application ni de l’état de toute application et de l’utilisateur qu’elle doit préserver. Par exemple, l’appel Thread.Abort peut empêcher l’exécution de constructeurs statiques ou la libération des ressources gérées ou non gérées. Pour cette raison, Thread.Abort provoque systématiquement une PlatformNotSupportedException sur .NET Core et .NET 5+.
Solutions de contournement
Utilisez un CancellationToken pour interrompre le traitement d'une unité de travail au lieu d'appeler Thread.Abort. L’exemple suivant illustre l’utilisation de 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);
}
}
Supprimer un avertissement
Si vous devez utiliser les API obsolètes, vous pouvez supprimer l’avertissement dans le code ou dans votre fichier projet.
Pour supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver, puis réactivez l’avertissement.
// Disable the warning.
#pragma warning disable SYSLIB0006
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0006
Pour supprimer tous les SYSLIB0006 avertissements dans votre projet, ajoutez une <NoWarn> propriété à votre fichier projet.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0006</NoWarn>
</PropertyGroup>
</Project>
Pour plus d’informations, consultez Supprimer des avertissements.