CriticalHandle.ReleaseHandle Méthode

Définition

En cas de substitution dans une classe dérivée, exécute le code nécessaire pour libérer le handle.

protected:
 abstract bool ReleaseHandle();
protected abstract bool ReleaseHandle ();
abstract member ReleaseHandle : unit -> bool
Protected MustOverride Function ReleaseHandle () As Boolean

Retours

true si la libération du handle réussit ; sinon, dans le cas d’un échec catastrophique, false. Dans ce cas, elle génère un Assistant Débogage managé releaseHandleFailed.

Remarques

La ReleaseHandle méthode est garantie d’être appelée une seule fois, à condition que vous employiez des mécanismes de synchronisation appropriés pour vous assurer qu’un seul appel à la Close méthode ou est Dispose effectué. La ReleaseHandle méthode n’est pas appelée si la IsInvalid propriété ou IsClosed est true. Implémentez cette méthode dans vos CriticalHandle classes dérivées pour exécuter tout code requis pour libérer le handle. Étant donné que l’une des fonctions de est de CriticalHandle garantir la prévention des fuites de ressources, le code dans votre implémentation de ReleaseHandle ne doit jamais échouer. Le récupérateur de mémoire appelle ReleaseHandle après que les finaliseurs normaux ont été exécutés pour les objets qui ont été collectés en même temps, et garantit aux ressources de l’appeler et qu’il ne sera pas interrompu pendant qu’il est en cours. Cette méthode sera préparée en tant que région d’exécution contrainte (CER) au moment de instance construction (avec toutes les méthodes de son graphique d’appel statiquement déterminable). Bien que cela empêche les interruptions d’abandon de thread, vous devez tout de même veiller à ne pas introduire de chemins d’erreur dans votre méthode remplacée ReleaseHandle . En particulier, appliquez l’attribut ReliabilityContractAttribute à toutes les méthodes que vous appelez à partir de ReleaseHandle. Dans la plupart des cas, ce code doit être :

ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)

En outre, pour un nettoyage simple (par exemple, l’appel de l’API CloseHandle Windows sur un handle de fichier), vous pouvez case activée la valeur de retour pour l’appel d’appel de plateforme unique. Pour le nettoyage complexe, vous pouvez avoir beaucoup de logique de programme et de nombreux appels de méthode, dont certains peuvent échouer. Vous devez vous assurer que votre logique de programme dispose d’un code de secours pour chacun de ces cas.

Si la ReleaseHandle méthode retourne false pour une raison quelconque, elle génère un Assistant Débogage managé releaseHandleFailed .

S’applique à

Voir aussi