/// <summary> /// 线程工作 /// </summary> private void InnerDoWork() { try { Exception doWorkEx = null; DoWorkResult doworkResult = DoWorkResult.ContinueThread; var t = CurrentPendingQueue; while (!this.Cancel && t.IsHad) { try { doworkResult = DoWork(t.PendingValue); } catch (Exception ex) { doWorkEx = ex; } FCompletedCount++; int precent = FCompletedCount * 100 / FQueueCount; OnOneCompleted(t.PendingValue, new CompetedEventArgs() { CompetedPrecent = precent, InnerException = doWorkEx }); if (doworkResult == DoWorkResult.AbortAllThread) { this.Cancel = true; break; } else if (doworkResult == DoWorkResult.AbortCurrentThread) { break; } t = CurrentPendingQueue; } lock (FAllCompletedLock) { FCompetedCount++; if (FCompetedCount == FThreadList.Count) { OnAllCompleted(new CompetedEventArgs() { CompetedPrecent = 100 }); } } } catch { throw; } }
private void writeHandler(DoWorkResult result) { }
protected override DoWorkResult DoWork(int pendingID) { DoWorkResult isOK = DoAction(pendingID); return(isOK); }