void timer_Elapsed(object sender, ElapsedEventArgs e) { DoSth(); }
private void DoSth() { try { _log.Info("开始生成结算单"); iProcesser.Process(); _log.Info("结束生成结算单"); } catch (Exception ex) { _log.Info("生成结算单出错"); _log.Error(ex.ToString()); } }
以上是定时执行方法
问题处在 DoSth里面 iProcesser.Process();
iProcesser 定义是这样的
private readonly IProcesser iProcesser = new SettlementProcesser();
SettlementProcesser 类里面 有个构造函数 初始化时间
DateTime statementDate; public SettlementProcesser() { statementDate = DateTime.Now.Date; }
生成结算单方法是根据这个时间去生成的,然而每天服务执行的时候,时间是一样的,都是服务启动时候的时间
private void DoSth() { try { _log.Info("开始生成结算单"); new SettlementProcesser().Process(); _log.Info("结束生成结算单"); } catch (Exception ex) { _log.Info("生成结算单出错"); _log.Error(ex.ToString()); } }
应该是这样的 每次执行的时候 都获取当前时间