public void Initialize() { _timer.Elapsed += async(sender, e) => { _timer.Stop(); DateTime curDateTime = DateTime.UtcNow; DateTime dateTime = _intervalHelper.GetLastDate(1, curDateTime); if (_isFirst) { _isFirst = false; try { await _reportGenerator.GenerateIfNotExist(dateTime); } catch (Exception exception) { Trace.TraceError("Failed to save initial report: {0}", exception); } } else { try { await _reportGenerator.Generate(dateTime); } catch (Exception exception) { Trace.TraceError("Failed to save report: {0}", exception); } } _timer.Interval = _intervalHelper.GetMillisecondsToEndDay(new TimeSpan(0, 1, 1, 0), DateTime.UtcNow); _timer.Start(); }; _timer.Start(); }