/// <summary>
        /// Finds all files by mask.
        /// </summary>
        /// <param name="path">The path.</param>
        /// <param name="mask">The mask.</param>
        /// <param name="handler">The handler.</param>
        /// <returns></returns>
        public string[] FindAllFiles(string path, string mask, FindFilesHandler handler = null)
        {
            List <string> files = new List <string>();

            string[] patterns = mask.Split('|');
            foreach (string pattern in patterns)
            {
                FindAllFilesRecursively(path, pattern, files, handler);
            }
            return(files.ToArray());
        }
        /// <summary>
        /// Finds all files recursively.
        /// </summary>
        /// <param name="path">The path.</param>
        /// <param name="mask">The mask.</param>
        /// <param name="list">The list.</param>
        /// <param name="handler">The handler.</param>
        private void FindAllFilesRecursively(string path, string mask, List <string> list, FindFilesHandler handler = null)
        {
            try
            {
                foreach (string f in Directory.GetFiles(path, mask))
                {
                    list.Add(f);
                    handler?.Invoke(f, list.Count);
                }

                foreach (string d in Directory.GetDirectories(path))
                {
                    FindAllFilesRecursively(d, mask, list, handler);
                }
            }
            catch (Exception ex)
            {
                _logger.LogWarning(ex.Message);
            }
        }