private void PaperHandler_ReportFinished(object sender, PaperInfoFinishArgs e) { try { //one finished if (e.Error != null) { //异常出错 lock (m_ErrorNumLock) { ErrorNum++; } SLogger.Instance.Writer(SLogLevel.Error, e.Error.Code + e.Error.Msg); return; } UserPaperDto u = e.UPaper; string uName = u.UserName; lock (m_HandledNumLock) { //执行的成功次数 HandledNum++; } PaperInfoFinishArgs arg = new PaperInfoFinishArgs() { UPaper = u }; OnRaiseReporting(arg); //to remove if (m_HandlerDic.ContainsKey(uName)) { m_HandlerDic.Remove(uName); } } catch (Exception ex) { SLogger.Instance.Writer(SLogLevel.Error, e.Error.Code + e.Error.Msg); } finally { //todo next 轮询 RunOneTask(); lock (m_FinishLock) { if (IsCompleted && !m_OneFinished) { m_OneFinished = true; m_State = JobState.End; //finished Console.WriteLine("All Finished!"); OnRaiseFinished(new EventArgs()); } } } }
private void Run(UserPaperDto d) { try { //todo report event PaperHandler paperHandler = new PaperHandler(); paperHandler.Reporting += PaperHandler_Reporting; paperHandler.ReportFinished += PaperHandler_ReportFinished; paperHandler.UserPaper = d; paperHandler.MonitorUserName = m_CurUserName; paperHandler.AddTasks(d.PaperInfo); m_HandlerDic.Add(d.UserName, paperHandler); } catch (Exception ex) { SLogger.Instance.Writer(SLogLevel.Error, ex.Message); } finally { } }