Enlistment.Done Metodo

Definizione

Indica che il partecipante alla transazione ha completato le relative operazioni.

public void Done ();

Commenti

Durante la fase finale del commit della transazione, il gestore delle transazioni chiama il metodo o InDoubt il CommitRollback metodo del partecipante, a seconda che la transazione venga eseguito il commit o il rollback della transazione. Gestione risorse deve eseguire qualsiasi lavoro necessario per completare la transazione e quindi informare la gestione transazioni che è stata completata chiamando il Done metodo sul enlistment parametro.

Se gestione risorse è elencato duramente, ma non risponde chiamando Done il metodo, il gestore delle transazioni non è sicuro che resource manager abbia ricevuto la rispettiva chiamata di notifica. Di conseguenza, il gestore delle transazioni rimane in attesa di una risposta e mantiene le informazioni rilevanti per questa transazione. Se Done non viene mai chiamato, questa parte di informazioni viene mantenuta in modo indefinito in memoria o in una risorsa a livello di sistema. Ciò comporta la mancata recupero delle risorse. Nel caso di una transazione distribuita, questa operazione potrebbe eventualmente riempire il log MSDTC che arresta il processo MSDTC. Nel caso di una transazione gestita da System.Transactions, ciò comporta un aumento graduale e continuo dell'utilizzo della memoria del processo di Resource Manager. Pertanto, è fondamentale chiamare il Done metodo dopo che gestione risorse viene eseguito con il lavoro di preparazione.

Un elenco può chiamare il Done metodo in qualsiasi momento prima che venga chiamato Prepared nella fase di preparazione. A tale scopo, l'inserimento viene eseguito il cast di un voto di sola lettura, vale a dire che vota il commit per la transazione, ma non deve ricevere il risultato finale. Si noti che, dopo aver chiamato questo metodo, il partecipante elencato non riceve ulteriori notifiche da gestione transazioni.

Si applica a

Prodotto Versioni
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Vedi anche