Exemple #1
0
 /// <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;
     }
 }
Exemple #2
0
        private void writeHandler(DoWorkResult result)
        {



        }
        protected override DoWorkResult DoWork(int pendingID)
        {
            DoWorkResult isOK = DoAction(pendingID);

            return(isOK);
        }