public async void StartSearch()
        {
            Duplicates.Clear();
            positionList.Clear();
            ElapsedTimer.Reset();
            SearchSW.Reset();
            float positionCounter = 0f;

            for (var i = 0; i < Settings.ThumbnailCount; i++)
            {
                positionCounter += 1.0F / (Settings.ThumbnailCount + 1);
                positionList.Add(positionCounter);
            }
            _isScanning              = true;
            m_pauseTokeSource        = new PauseTokenSource();
            m_cancelationTokenSource = new CancellationTokenSource();

            //get files
            Logger.Instance.Info(Properties.Resources.BuildingFileList);
            await Task.Run(() => InternalBuildFileList());

            FilesEnumerated?.Invoke(this, new EventArgs());
            //start scan
            Logger.Instance.Info(Properties.Resources.StartScan);
            if (!m_cancelationTokenSource.IsCancellationRequested)
            {
                await Task.Run(() => InternalSearch(m_cancelationTokenSource.Token, m_pauseTokeSource));
            }
            ScanDone?.Invoke(this, new EventArgs());
            Logger.Instance.Info(Properties.Resources.ScanDone);
            _isScanning       = false;
            ScanProgressValue = 0;
            DatabaseHelper.SaveDatabase(DatabaseFileList);
        }
示例#2
0
        protected virtual void OnScanDone()
        {
            ScanDone handler = ScanDone;

            if (handler != null)
            {
                handler.Invoke();
            }
        }
示例#3
0
 public void ScanArray()
 {
     ScanStart?.Invoke(this, EventArgs.Empty);
     for (var i = 0; i < numbers.Length; i++)
     {
         if (numbers[i] % 2 == 1)
         {
             var args = new OddNumberEventArgs(numbers[i]);
             IterateOdd?.Invoke(this, args);
             if (args.CancelRequested)
             {
                 break;
             }
         }
     }
     ScanDone?.Invoke(this, EventArgs.Empty);
 }