Sobes.tech
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.