using System; namespace Developpez.Dotnet { /// /// Exécute une action lorsque cet objet est disposé. Permet de garantir l'exécution d'une /// action à la fin d'un bloc using. /// public class DisposableAction : IDisposable { private Action _action; /// /// Initialise une nouvelle instance de DisposableAction. /// /// L'action à exécuter lorsque l'objet est disposé. public DisposableAction(Action action) { _action = action; } #region IDisposable Members /// /// Exécute l'action spécifiée à la création de l'objet. L'action n'est exécutée qu'une /// fois même si Dispose est appelée plusieurs fois. /// public void Dispose() { try { if (_action != null) _action(); } finally { _action = null; } } #endregion } }