Junior — Middle
Pouvez-vous expliquer ce que signifie le modèle Dispose en programmation?
sobes.tech IA
Réponse de l'IA
Le motif Dispose en programmation, en particulier en C#, est utilisé pour libérer correctement les ressources non gérées (par exemple, descripteurs de fichiers, connexions à une base de données, sockets) qui ne sont pas contrôlées par le ramasse-miettes.
En C#, cela se fait en implémentant l'interface IDisposable, qui contient la méthode Dispose(). L'appel à cette méthode libère explicitement les ressources lorsque l'objet n'est plus nécessaire.
Exemple d'utilisation :
class ResourceHolder : IDisposable
{
private bool disposed = false;
private IntPtr unmanagedResource; // exemple de ressource non gérée
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this); // empêche l'appel du finaliseur
}
protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
// Libérer les ressources gérées
}
// Libérer les ressources non gérées
CloseHandle(unmanagedResource);
unmanagedResource = IntPtr.Zero;
disposed = true;
}
}
~ResourceHolder()
{
Dispose(false);
}
}
Ainsi, le pattern Dispose aide à contrôler le moment de libération des ressources et évite les fuites de mémoire ou les blocages.