Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las SIGUIENTES API están marcadas como obsoletas, a partir de .NET 5. El uso de estas APIs genera una advertencia SYSLIB0006 en tiempo de compilación y PlatformNotSupportedException en tiempo de ejecución.
Cuando llamas a Thread.Abort para anular un subproceso distinto del subproceso actual, no sabes qué código se ha ejecutado o ha fallado al ejecutarse cuando se lanza ThreadAbortException. Tampoco puede estar seguro del estado de su aplicación, ni de cualquier estado de aplicación o usuario que deba preservar. Por ejemplo, llamar Thread.Abort puede impedir la ejecución de constructores estáticos o la liberación de recursos administrados o no administrados. Por este motivo, Thread.Abort siempre lanza un PlatformNotSupportedException en .NET Core y .NET 5+.
Soluciones alternativas
Utiliza CancellationToken para abortar el procesamiento de una unidad de trabajo en lugar de llamar a Thread.Abort. En el ejemplo siguiente se muestra el uso 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);
}
}
Supresión de una advertencia
Si debe usar las API obsoletas, puede suprimir la advertencia en el código o en el archivo del proyecto.
Para suprimir solo una infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la advertencia.
// Disable the warning.
#pragma warning disable SYSLIB0006
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0006
Para suprimir todas las SYSLIB0006 advertencias del proyecto, agregue una <NoWarn> propiedad al archivo del proyecto.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0006</NoWarn>
</PropertyGroup>
</Project>
Para obtener más información, vea Suprimir advertencias.