예제 #1
0
        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();
        }