using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Pithos.Core { public class Notifier:IDisposable { private readonly IStatusNotification _statusNotification; private readonly Notification _endNotification; public Notifier(IStatusNotification statusNotification,string startMessage,string endMessage) :this(statusNotification,new Notification{Message=startMessage},new Notification{Message=endMessage} ) { } public Notifier(IStatusNotification statusNotification,Notification startNotification,Notification endNotification) { _statusNotification = statusNotification; _endNotification = endNotification; _statusNotification.Notify(startNotification); } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } ~Notifier() { Dispose(false); } protected virtual void Dispose(bool disposing) { if (disposing) { _statusNotification.Notify(_endNotification); } } } }