private void OnTimedEvent(object source, ElapsedEventArgs e) { ((Timer)source).Stop(); System.Diagnostics.Trace.CorrelationManager.ActivityId = Guid.NewGuid(); JobberSupervisor.Instance.KeepOn(JobberConfiguration.JobName, JobberConfiguration.LockingDuration, () => { _logger.Info($"[{JobberConfiguration.JobName}] job [OnTimedEvent] started. Start time: {DateTime.Now}"); try { using (var scope = _jobScope.CreateJobScope()) { IJobProducer producer = (IJobProducer)scope.CreateJobInstance(_jobType); producer.ProduceJobs(); } } catch (Exception ex) { _logger.Error(ex); } _logger.Info($"[{JobberConfiguration.JobName}] job [OnTimedEvent] ended. End time: {DateTime.Now}"); }); ((Timer)source).Start(); }
public CpuMiner(IJobProducer jobProducer, ILogger logger, int seed) { this.jobProducer = jobProducer; this.logger = logger; this.seed = seed; this.rnd = new Random(seed); this.buffer = new byte[8]; this.hashRateReportTimer = new System.Timers.Timer(2000); this.hashRateReportTimer.Elapsed += (s, e) => { if (this.hashRate > 0) { this.logger.Log($"[{this.seed}] Hashrate -> " + this.hashRate); this.jobProducer.ReportHashrate(this.hashRate).GetAwaiter().GetResult(); } }; this.hashRateReportTimer.Start(); }