private void InitFileListWithGarbageCollecting() { #region // Чудеса в решете и шаманство с освобождением памяти m_FilesList.Clear(); // Соберём мусор GC.Collect(); // Нужно ещё сбросить всякие EventHandler'ы m_FilesList = new CModifiableSourceFilesList(m_ext); m_FilesList.SetLoadFilesOptions(m_LoadFilesOptions); m_FilesList.InitFilesListBuildingCallbacks(new EventHandler(ReportFilesListBuildingStart), null, new EventHandler(ReportFilesListBuildingEnd)); m_FilesList.InitLoadFilesCallbacks(new EventHandler(ReportLoadFilesStart), new EventHandler(ReportLoadFilesProgress), null); #endregion }
//protected CBaseCloneSearchExecutor() // : this(CAvailableCloneSearchAlgorithms.GetAlgorithm(CloneSearchAlgoritms.HashBucketAlgorithm)) //{} public CBaseCloneSearchExecutor(CBaseCloneSearchStrategy search_algorithm, ICloneExtension ext) { m_ext = ext; m_ProcessedClonesCounter = 0; m_ReportingCounter = 0; m_MessageEventArgs = new MessageEventArgs(); m_LoadFilesOptions = new CLoadFilesOptions(); m_FilesList = new CModifiableSourceFilesList(m_ext); m_CloneSearchProvider = new CCloneSearchProvider(search_algorithm); InitBackgroundThread(); m_CloneSearchProvider.InitCloneSearchCallbacks(new EventHandler(ReportCloneSearchStart), new EventHandler(ReportCloneSearchProgress), new EventHandler(ReportCloneSearchEnd)); //m_FilesList.InitFilesListBuildingCallbacks(new EventHandler(ReportFilesListBuildingStart), null, new EventHandler(ReportFilesListBuildingEnd)); //m_FilesList.InitLoadFilesCallbacks(new EventHandler(ReportLoadFilesStart), new EventHandler(ReportLoadFilesProgress), null); }