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
}
}