/// <summary>
        /// Opens the file with a specified maxium number of rows with a default value that insures
        /// the max this code can handle isn't reached.
        /// </summary>
        /// <param name="filename"></param>
        /// <param name="maxRows"></param>
        public void OpenFile(string filename, int maxRows = Int32.MaxValue)
        {
            ColumnSelectorsVisible = false;
            if (_linesProvider != null)
            {
                _linesProvider.Dispose();
                _linesProvider = null;
            }
            // Select low level lines provider as being a binary lines provider, or a text line provider
            BigFileLine lineConverter = _binaryMode ? (BigFileLine)(new BigBinFileLine()) : (BigFileLine)(new BigTextFileLine());

            OpenProvider(new FileLinesProvider(filename, maxRows, lineConverter));
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="DemoCustomerProvider"/> class.
        /// </summary>
        /// <param name="count">The count.</param>
        /// <param name="fetchDelay">The fetch delay.</param>
        public FileLinesProvider(string inputFilename, int maxRows, BigFileLine lineConverter)
        {
            _maxRows       = maxRows;
            _lineConverter = lineConverter;
            _inputFilename = inputFilename;
            _inputStream   = new FileStream(inputFilename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
            var firstLine = _lineConverter.GetLines(_inputStream, 0, 1).FirstOrDefault();

            if (firstLine != null)
            {
                Header = firstLine.Columns.Aggregate((a, b) => a + "," + b);
            }
            _lineCountTask = Task.Run(() => CountLines(inputFilename, maxRows));
        }