Condividi tramite


SYSLIB0059: I callback di SystemEvents.EventsThreadShutdown non vengono eseguiti prima che il processo termini.

L'evento SystemEvents.EventsThreadShutdown è obsoleto, a partire da .NET 10. Facendo riferimento a questo evento nel codice viene generato un avviso SYSLIB0059 in fase di compilazione.

Motivo dell'obsoletione

La gestione precedente dell'arresto in SystemEvents potrebbe bloccare il thread del finalizzatore durante l'arresto dell'applicazione. Per evitare di bloccare il thread del finalizzatore, SystemEvents non ha più la gestione dell'arresto, il che significa che l'evento SystemEvents.EventsThreadShutdown non viene più chiamato. Per visualizzare questa modifica del comportamento, l'evento è stato contrassegnato come obsoleto.

Soluzione alternativa

Usa invece AppDomain.ProcessExit.

Eliminare un avviso

Se è necessario usare l'API obsoleta, è 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 SYSLIB0059

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

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

Per eliminare tutti gli avvisi di SYSLIB0059 nel progetto, aggiungere una proprietà <NoWarn> al file di progetto.

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

Per ulteriori informazioni, vedere Sopprimere gli avvisi.