private void SwitchOnWatching(string[] validFileNames)
        {
            _triggerBasedUpdate = new Main.TriggerBasedUpdate(Current.TimerQueue)
            {
                MinimumWaitingTimeAfterUpdate       = TimeSpanExtensions.FromSecondsAccurate(_importOptions.MinimumWaitingTimeAfterUpdateInSeconds),
                MaximumWaitingTimeAfterUpdate       = TimeSpanExtensions.FromSecondsAccurate(Math.Max(_importOptions.MinimumWaitingTimeAfterUpdateInSeconds, _importOptions.MaximumWaitingTimeAfterUpdateInSeconds)),
                MinimumWaitingTimeAfterFirstTrigger = TimeSpanExtensions.FromSecondsAccurate(_importOptions.MinimumWaitingTimeAfterFirstTriggerInSeconds),
                MinimumWaitingTimeAfterLastTrigger  = TimeSpanExtensions.FromSecondsAccurate(_importOptions.MinimumWaitingTimeAfterLastTriggerInSeconds),
                MaximumWaitingTimeAfterFirstTrigger = TimeSpanExtensions.FromSecondsAccurate(Math.Max(_importOptions.MaximumWaitingTimeAfterFirstTriggerInSeconds, _importOptions.MinimumWaitingTimeAfterFirstTriggerInSeconds))
            };

            _triggerBasedUpdate.UpdateAction += EhUpdateByTimerQueue;

            var directories = new HashSet <string>(validFileNames.Select(x => System.IO.Path.GetDirectoryName(x)));
            var watchers    = new List <System.IO.FileSystemWatcher>();

            foreach (var directory in directories)
            {
                try
                {
                    var watcher = new System.IO.FileSystemWatcher(directory)
                    {
                        NotifyFilter = System.IO.NotifyFilters.LastWrite | System.IO.NotifyFilters.Size
                    };
                    watcher.Changed += EhTriggerByFileSystemWatcher;
                    watcher.IncludeSubdirectories = false;
                    watcher.EnableRaisingEvents   = true;
                    watchers.Add(watcher);
                }
                catch (Exception)
                {
                }
            }
            _fileSystemWatchers = watchers.ToArray();
        }
 private void SwitchOnWatching()
 {
     _triggerBasedUpdate = new Main.TriggerBasedUpdate(Current.TimerQueue)
     {
         MinimumWaitingTimeAfterUpdate = TimeSpanExtensions.FromSecondsAccurate(_importOptions.MinimumWaitingTimeAfterUpdateInSeconds),
         MaximumWaitingTimeAfterUpdate = TimeSpanExtensions.FromSecondsAccurate(Math.Max(_importOptions.MinimumWaitingTimeAfterUpdateInSeconds, _importOptions.MaximumWaitingTimeAfterUpdateInSeconds))
     };
     _triggerBasedUpdate.UpdateAction += EhUpdateByTimerQueue;
 }
        private void SwitchOffWatching()
        {
            IDisposable disp;

            disp = _triggerBasedUpdate;
            _triggerBasedUpdate = null;
            if (null != disp)
            {
                disp.Dispose();
            }
        }
        private void SwitchOffWatching()
        {
            IDisposable disp = null;

            var watchers = _fileSystemWatchers;

            _fileSystemWatchers = new System.IO.FileSystemWatcher[0];

            for (int i = 0; i < watchers.Length; ++i)
            {
                disp = watchers[i];
                if (null != disp)
                {
                    disp.Dispose();
                }
            }

            disp = _triggerBasedUpdate;
            _triggerBasedUpdate = null;
            if (null != disp)
            {
                disp.Dispose();
            }
        }
		private void SwitchOffWatching()
		{
			IDisposable disp = null;

			var watchers = _fileSystemWatchers;
			_fileSystemWatchers = new System.IO.FileSystemWatcher[0];

			for (int i = 0; i < watchers.Length; ++i)
			{
				disp = watchers[i];
				if (null != disp)
					disp.Dispose();
			}

			disp = _triggerBasedUpdate;
			_triggerBasedUpdate = null;
			if (null != disp)
				disp.Dispose();
		}
		private void SwitchOnWatching(string[] validFileNames)
		{
			_triggerBasedUpdate = new Main.TriggerBasedUpdate(Current.TimerQueue);
			_triggerBasedUpdate.MinimumWaitingTimeAfterUpdate = TimeSpanExtensions.FromSecondsAccurate(_importOptions.MinimumWaitingTimeAfterUpdateInSeconds);
			_triggerBasedUpdate.MaximumWaitingTimeAfterUpdate = TimeSpanExtensions.FromSecondsAccurate(Math.Max(_importOptions.MinimumWaitingTimeAfterUpdateInSeconds, _importOptions.MaximumWaitingTimeAfterUpdateInSeconds));
			_triggerBasedUpdate.MinimumWaitingTimeAfterFirstTrigger = TimeSpanExtensions.FromSecondsAccurate(_importOptions.MinimumWaitingTimeAfterFirstTriggerInSeconds);
			_triggerBasedUpdate.MinimumWaitingTimeAfterLastTrigger = TimeSpanExtensions.FromSecondsAccurate(_importOptions.MinimumWaitingTimeAfterLastTriggerInSeconds);
			_triggerBasedUpdate.MaximumWaitingTimeAfterFirstTrigger = TimeSpanExtensions.FromSecondsAccurate(Math.Max(_importOptions.MaximumWaitingTimeAfterFirstTriggerInSeconds, _importOptions.MinimumWaitingTimeAfterFirstTriggerInSeconds));

			_triggerBasedUpdate.UpdateAction += EhUpdateByTimerQueue;

			var directories = new HashSet<string>(validFileNames.Select(x => System.IO.Path.GetDirectoryName(x)));
			var watchers = new List<System.IO.FileSystemWatcher>();
			foreach (var directory in directories)
			{
				try
				{
					var watcher = new System.IO.FileSystemWatcher(directory);
					watcher.NotifyFilter = System.IO.NotifyFilters.LastWrite | System.IO.NotifyFilters.Size;
					watcher.Changed += EhTriggerByFileSystemWatcher;
					watcher.IncludeSubdirectories = false;
					watcher.EnableRaisingEvents = true;
					watchers.Add(watcher);
				}
				catch (Exception)
				{
				}
			}
			_fileSystemWatchers = watchers.ToArray();
		}
		private void SwitchOffWatching()
		{
			IDisposable disp;

			disp = _triggerBasedUpdate;
			_triggerBasedUpdate = null;
			if (null != disp)
				disp.Dispose();
		}
		private void SwitchOnWatching()
		{
			_triggerBasedUpdate = new Main.TriggerBasedUpdate(Current.TimerQueue);
			_triggerBasedUpdate.MinimumWaitingTimeAfterUpdate = TimeSpanExtensions.FromSecondsAccurate(_importOptions.MinimumWaitingTimeAfterUpdateInSeconds);
			_triggerBasedUpdate.MaximumWaitingTimeAfterUpdate = TimeSpanExtensions.FromSecondsAccurate(Math.Max(_importOptions.MinimumWaitingTimeAfterUpdateInSeconds, _importOptions.MaximumWaitingTimeAfterUpdateInSeconds));
			_triggerBasedUpdate.UpdateAction += EhUpdateByTimerQueue;
		}