public void Execute(IJobExecutionContext context) { IJobDetail jobDetail = context.JobDetail; TaskContext taskContext = ReportTaskManage.GetJobInfo(jobDetail); List <Task <ReportTaskResult> > tasks = new List <Task <ReportTaskResult> >(); DateTime nowTime = DateTime.Now; foreach (var reportTask in taskContext.ReportHandles) { reportTask.CreateDate = nowTime; ReportFileBase file = new MonitorReportFile(reportTask); if (file.CreateNewFile != null) { tasks.Add(factory.StartNew(file.CreateNewFile, token)); } } factory.ContinueWhenAll(tasks.ToArray(), (results) => { foreach (var t in tasks) { if (t.Result.Result == Result.Successful) { logger.Debug(string.Format("{0}..{1}..start save", t.Result.ReportInfo.Id, t.Result.ReportInfo.Name)); UpdateReportCollect(t.Result.ReportInfo); logger.Debug("end save"); } } }); }
static void Main(string[] args) { Log.Debug("Start...."); SetTimedTask(); ReportTaskManage.CreateInstance().Start(); // Console.ReadKey();//出现线程死锁 autoReset.WaitOne(); Log.Debug("Exit...."); }
public static ReportTaskManage CreateInstance() { if (instance == null) { lock (lockHelper) { if (instance == null) { instance = new ReportTaskManage(); } } } return(instance); }