// ********************************************************************
        // Public Methods
        // ********************************************************************
        #region Public Methods

        /// <summary>
        // Constructor. Initializes class fields.
        /// </summary>
        /// <param name="minimumDistance"></param>
        public ClosestPointPicker(Size minimumDistance, Dispatcher dispatcher)
        {
            this._minimumDistance = new Rect(minimumDistance);
            _dispatcher           = dispatcher;
            _points        = new List <PointAndPrimitive>();
            _mousePosQueue = new BlockingCollection <PointAndBounds>();
            Thread thread = new Thread(new ThreadStart(() => {
                foreach (PointAndBounds mousePosIter in _mousePosQueue.GetLatestConsumingEnumerable())
                {
                    MouseMoved(mousePosIter.Point, mousePosIter.Bounds);
                }
            }));

            thread.IsBackground = true;
            thread.Start();
        }