Sdílet prostřednictvím


Enlistment.Done Metoda

Definice

Označuje, že účastník transakce dokončil svou práci.

public:
 void Done();
public void Done ();
member this.Done : unit -> unit
Public Sub Done ()

Poznámky

Během poslední fáze potvrzení transakce správce transakce volá buď Commit, Rollback nebo InDoubt metodu účastníka v závislosti na tom, zda transakce má být potvrzena nebo vrácena zpět. Správce prostředků by měl provést jakoukoli práci potřebnou k dokončení transakce a pak informovat správce transakcí, že dokončil voláním Done metody parametru enlistment .

Pokud správce prostředků vytáhla trvalou dobu, ale nereaguje voláním Done metody, správce transakcí si nejste jisti, že správce prostředků obdržel příslušné volání oznámení. Správce transakcí tak stále čeká na odpověď a udržuje informace relevantní pro tuto transakci. Pokud Done se nikdy nevolá, tato část informací se uchovává po neomezenou dobu v paměti nebo v systémovém prostředku. To vede k tomu, že se prostředky nebudou moct uvolnit. V případě distribuované transakce by to mohlo nakonec vyplnit protokol MSDTC, který zastaví proces MSDTC. V případě transakce spravované System.Transactionstímto způsobem dojde k postupnému a neustálému zvýšení spotřeby paměti procesu správce prostředků. Proto je důležité volat metodu Done , jakmile správce prostředků dokončí přípravu práce.

Zařazení může metodu Done volat kdykoli předtím, než volá Prepared ve fázi přípravy. Tímto způsobem je zařazení přetypování hlasování jen pro čtení, což znamená, že hlasuje potvrzení o transakci, ale nemusí přijímat konečný výsledek. Všimněte si, že po zavolání této metody obdrží účastník zařazení žádné další oznámení od správce transakcí.

Platí pro

Viz také