public List<FileInfo> FindFiles(String data, String directory, int fileBufferize)
        {
            try {
                callerThread = Thread.CurrentThread;
                FolderSearcher folderSearcher = new FolderSearcher(directory, SetAllFilesSearched, AddToBaseList);
                folderThread = new Thread(folderSearcher.FindFilesToSearch);
                folderThread.IsBackground = true;
                folderThread.Start();

                searchThreads = new Thread[threadCount];
                for (int i = 0; i < threadCount; i++) {
                    FileSearcher fileSearcher = new FileSearcher(
                        data,
                        fileBufferize,
                        IsAllFilesSearched,
                        GetListCount,
                        AddFileInfo,
                        GetFirstFileInfo
                        );

                    searchThreads[i] = new Thread(fileSearcher.TestFiles);
                    searchThreads[i].IsBackground = true;
                    searchThreads[i].Start();
                }

                folderThread.Join();
                for (int i = 0; i < threadCount; i++) {
                    searchThreads[i].Join();
                }

                return new List<FileInfo>(resultFiles.Values);
            }
            catch (ThreadInterruptedException e) {
                return null;
            }
        }
        public static List <DataFixModel> FindMismatches(string selectedFolder, List <DataFixModel> foundInDatabaseButNotFolderDataFixModels, List <DataFixModel> foundInFolderButNotDatabaseDataFixModels)
        {
            List <DataFixModel> foundInFolderDataFixModels            = new List <DataFixModel>();
            List <DataFixModel> foundInDataBaseDataFixModels          = new List <DataFixModel>();
            List <DataFixModel> foundInFolderAndDatabaseDataFixModels = new List <DataFixModel>();

            foundInFolderDataFixModels   = FolderSearcher.FindDataFixModelsInFolders(selectedFolder);
            foundInDataBaseDataFixModels = SqlConnector.FindDataFixesInDataBase();

            //DataFixModel testFolder = foundInFolderDataFixModels.Where( x => x.MajorVersion == 2018 && x.MinorVersion == 19 && x.BuildVersion == 0 && x.RevnVersion == 2 ).FirstOrDefault();
            //DataFixModel testDatabase = foundInDataBaseDataFixModels.Where(x => x.MajorVersion == 2018 && x.MinorVersion == 19 && x.BuildVersion == 0 && x.RevnVersion == 2).FirstOrDefault();

            //foundInFolderDataFixModels.Clear();
            //foundInFolderDataFixModels.Add(testFolder);

            //foundInDataBaseDataFixModels.Clear();
            //foundInDataBaseDataFixModels.Add(testDatabase  );

            //foundInFolderDataFixModels.OrderBy( x => x.Version );
            //foundInDataBaseDataFixModels.OrderBy(x => x.Version);

            foreach (DataFixModel dm in foundInFolderDataFixModels)
            {
                DataFixModel res;
                res = foundInDataBaseDataFixModels.Where(x => x.MajorVersion == dm.MajorVersion &&
                                                         x.MinorVersion == dm.MinorVersion &&
                                                         x.BuildVersion == dm.BuildVersion &&
                                                         x.RevnVersion == dm.RevnVersion).FirstOrDefault();
                if (res != null)
                {
                    foundInFolderAndDatabaseDataFixModels.Add(dm);
                }
            }


            foreach (DataFixModel dm in foundInDataBaseDataFixModels)
            {
                DataFixModel res;
                res = foundInFolderDataFixModels.Where(x => x.MajorVersion == dm.MajorVersion &&
                                                       x.MinorVersion == dm.MinorVersion &&
                                                       x.BuildVersion == dm.BuildVersion &&
                                                       x.RevnVersion == dm.RevnVersion).FirstOrDefault();
                if (res == null)
                {
                    foundInDatabaseButNotFolderDataFixModels.Add(dm);
                }
            }

            foreach (DataFixModel dm in foundInFolderDataFixModels)
            {
                DataFixModel res;
                res = foundInDataBaseDataFixModels.Where(x => x.MajorVersion == dm.MajorVersion &&
                                                         x.MinorVersion == dm.MinorVersion &&
                                                         x.BuildVersion == dm.BuildVersion &&
                                                         x.RevnVersion == dm.RevnVersion).FirstOrDefault();
                if (res == null)
                {
                    foundInFolderButNotDatabaseDataFixModels.Add(dm);
                }
            }

            return(foundInFolderAndDatabaseDataFixModels);
        }