Inheritance: IDisposable
 /// <summary>
 /// Initializes a new instance of the <see cref="ActionBuffer" /> class.
 /// </summary>
 /// <param name="action">The action.</param>
 public ActionBuffer([NotNull] BufferedAction action)
 {
     _action = action;
     if (action.Duration >= 0)
     {
         _timer = new Timer(OnTick, this, action.Duration, Timeout.Infinite);
     }
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="ConfigurationFileWatcher"/> class.
        /// </summary>
        /// <param name="path">The path.</param>
        private ConfigurationFileWatcher([NotNull] string path)
        {
            _eventAction = new BufferedAction(WatcherOnChanged, 100);
            Path = path;
            if (!File.Exists(path)) return;

            // ReSharper disable once AssignNullToNotNullAttribute
            _watcher = new FileSystemWatcher(System.IO.Path.GetDirectoryName(path), System.IO.Path.GetFileName(path));
            _watcher.Changed += (s, e) => _eventAction.Run();
            _watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.Size;
            _watcher.EnableRaisingEvents = true;
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="ActionBuffer" /> class.
 /// </summary>
 /// <param name="action">The action.</param>
 public ActionBuffer([NotNull] BufferedAction action)
 {
     _action = action;
     _timer = new Timer(OnTick, this, action.Duration, Timeout.Infinite);
 }