protected override void OnStart(string[] args)
        {
            ITrigger       CurrencyTrigger;
            IJobDetail     CurrencyJobDetail;
            TriggerBuilder TriggerSpec;
            string         DateNow, DateNext;

            base.OnStart(args);
            if (Scheduler == null)
            {
                Scheduler = StdSchedulerFactory.GetDefaultScheduler();
            }
            Scheduler.Start();

            TriggerSpec = TriggerBuilder.Create();
            TriggerSpec = TriggerSpec.WithCronSchedule(CronMonthly, (CronSchBuilder) => {
                CronSchBuilder.InTimeZone(TimeZoneInfo.Utc);
                CronSchBuilder.WithMisfireHandlingInstructionFireAndProceed();
            });
            CurrencyTrigger   = TriggerSpec.Build();
            CurrencyJobDetail = JobBuilder.Create(typeof(CurrencyRateUpdateJob)).Build();
            CurrencyJobDetail.JobDataMap["ServiceLog"] = this.ServiceLog;
            Scheduler.ScheduleJob(CurrencyJobDetail, CurrencyTrigger);
            DateNow  = DateTime.UtcNow.ToString("F");
            DateNext = CurrencyTrigger.GetNextFireTimeUtc().HasValue ? CurrencyTrigger.GetNextFireTimeUtc().Value.DateTime.ToString("F") : "Unavailable";
            ServiceLog.WriteEntry(string.Format(FRMT_INIT, DateNow, DateNext), EventLogEntryType.Information);

            if (ServiceLog.MaximumKilobytes < 51200)
            {
                ServiceLog.MaximumKilobytes = 51200;       // Set our custom EventLog size to 50MB
            }
        }
 protected abstract void ConvertErrorHandler(Currency currency, CurrencyTrigger trigger, NPNFError error);