Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Le API seguenti sono contrassegnate come obsolete, a partire da .NET 5. L'uso di queste API genera un avviso SYSLIB0006 in fase di compilazione e in fase di PlatformNotSupportedException esecuzione.
Quando si chiama Thread.Abort per terminare un thread diverso da quello corrente, non si sa quale codice è stato eseguito o non eseguito correttamente quando viene generato ThreadAbortException. Non puoi essere certo dello stato della tua applicazione o di qualsiasi applicazione e stato dell'utente di cui è responsabile del mantenimento. Ad esempio, la chiamata Thread.Abort può impedire l'esecuzione di costruttori statici o il rilascio di risorse gestite o non gestite. Per questo motivo, Thread.Abort genera sempre un'eccezione PlatformNotSupportedException su .NET Core e .NET 5+.
Soluzioni alternative
Usare un CancellationToken per interrompere l'elaborazione di un'attività di lavoro anziché chiamare Thread.Abort. Nell'esempio seguente viene illustrato l'uso di 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);
}
}
Eliminare un avviso
Se è necessario usare le API obsolete, è possibile eliminare l'avviso nel codice o nel file di progetto.
Per eliminare solo una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare l'avviso.
// Disable the warning.
#pragma warning disable SYSLIB0006
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0006
Per eliminare tutti gli avvisi di SYSLIB0006 nel progetto, aggiungere una proprietà <NoWarn> al file di progetto.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0006</NoWarn>
</PropertyGroup>
</Project>
Per ulteriori informazioni, vedere Sopprimere gli avvisi.