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); }
protected virtual void OnScanDone() { ScanDone handler = ScanDone; if (handler != null) { handler.Invoke(); } }
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); }