public DirectoryContentThreadInfoDto ParseDirectoryContent(string subDirectory)
        {
            var fullPath = GetFullPath(subDirectory);
            var info     = new DirectoryContentThreadInfo {
                FullPath = fullPath
            };

            DoParseDirectoryContent(info);
            return(info);
        }
        private void DoParseDirectoryContent(DirectoryContentThreadInfo info)
        {
            Log.Begin($"{nameof(DoParseDirectoryContent)}.{info.FullPath}");

            foreach (Content entity in _physicalFilesParser.ParsePhysicalFiles(info))
            {
                PersistContentEntity(entity);
            }

            Log.End($"{nameof(DoParseDirectoryContent)}.{info.FullPath}");
        }
        public async Task <DirectoryContentThreadInfoDto> ParseDirectoryContentAsync(string subDirectory)
        {
            var fullPath = GetFullPath(subDirectory);
            var info     = new DirectoryContentThreadInfo {
                FullPath = fullPath
            };

            DirectoryContentInfos.ContentInfos.Add(fullPath, info);
            await Task.Run(() => DoParseDirectoryContent(info));

            var retVal = GetThreadInfo(subDirectory);

            DirectoryContentInfos.ContentInfos.Remove(fullPath);
            return(retVal);
        }