public static void QueryLog(ref IActionAnalyzer actionAnalyzer, int reportValue, ref BackgroundWorker worker, ref DoWorkEventArgs e) { try { using (var db = new LibraryLogModel()) { int count = 0; var table = db.FrontOfficeAction.AsNoTracking() .OrderBy(s => s.FrontOfficeSessionId) .ThenBy(d => d.ActionDateTime); if (Maximum > 0) { table = (IOrderedQueryable <DbEntities.FrontOfficeAction>)table.Take(Maximum); } foreach (var row in table) { if (worker.CancellationPending) { e.Cancel = true; break; } count++; actionAnalyzer.AnalyzeAction(row); if (count % reportValue == 0) { worker.ReportProgress(count, BackgroundWorkerState.ActionAnalyzerReportProgress); } } } } catch (Exception ignore) { } }
public void RunWorker() { if (!_worker.IsBusy) { _actionAnalyzer = new ActionAnalyzer(); _worker.RunWorkerAsync(); } else { _runWhenReady = true; } }