/// <summary>
        /// Send an exit signal to the thread.
        /// </summary>
        public void Exit()
        {
            if (IsActive)
            {
                IsActive = false;
                Log.Trace("FileSystemDataFeed.Exit(): Start. Setting cancellation token...");
                _cancellationTokenSource.Cancel();
                Log.Trace("FileSystemDataFeed.Exit(): Ending Thread...");
                _controller?.DisposeSafely();

                if (_subscriptions != null)
                {
                    // remove each subscription from our collection
                    foreach (var subscription in Subscriptions)
                    {
                        try
                        {
                            RemoveSubscription(subscription.Configuration);
                        }
                        catch (Exception err)
                        {
                            Log.Error(err, "Error removing: " + subscription.Configuration);
                        }
                    }
                }

                _subscriptionfactory?.DisposeSafely();
                Log.Trace("FileSystemDataFeed.Exit(): Exit Finished.");
            }
        }
 /// <summary>
 /// Send an exit signal to the thread.
 /// </summary>
 public void Exit()
 {
     if (IsActive)
     {
         IsActive = false;
         Log.Trace("FileSystemDataFeed.Exit(): Start. Setting cancellation token...");
         _cancellationTokenSource.Cancel();
         Log.Trace("FileSystemDataFeed.Exit(): Ending Thread...");
         _controller?.DisposeSafely();
         _subscriptionFactory?.DisposeSafely();
         Log.Trace("FileSystemDataFeed.Exit(): Exit Finished.");
     }
 }