using CRM.Core.BLL.EventBus.EventHandlers; using CRM.Core.Common.EventBus; using Quartz; using Quartz.Xml; using System; using System.Collections; using System.IO; using System.ServiceProcess; using System.Threading; using WX.CRM.Common; namespace CRM.Core.CoreService { public partial class CoreWinService : ServiceBase { Thread _sms_send; public CoreWinService() { InitializeComponent(); } protected override void OnStart(string[] args) { try { _sms_send = new Thread(new ThreadStart(GetScheduleJob)); _sms_send.Start(); //注册推送事件 EventBus.Instance.Subscribe(new CloseOrderEventHandler()); EventBus.Instance.Subscribe(new PayOrderEventHandler()); EventBus.Instance.Subscribe(new OpenOrderEventHandler()); EventBus.Instance.Subscribe(new UpGradeOrderEventHandler()); EventBus.Instance.Subscribe(new OpenOrderSendSmsEventHandler()); EventBus.Instance.Subscribe(new DepositOrderEventHandler()); EventBus.Instance.Subscribe(new DepositUseOrderEventHandler()); EventBus.Instance.Subscribe(new DepositRefundOrderEventHandler()); EventBus.Instance.Subscribe(new AllOpenOrderEventHandler()); LogHelper.Info("-----服务启动成功!------"); } catch (Exception e) { WX.CRM.Common.LogHelper.Error(e); } } protected override void OnStop() { try { if (_sms_send.ThreadState == System.Threading.ThreadState.Running) _sms_send.Abort(); LogHelper.Info("服务停止!"); } catch (Exception e) { WX.CRM.Common.LogHelper.Error(e); } } public void GetScheduleJob() { try { JobSchedulingDataProcessor processor = new JobSchedulingDataProcessor(true, true); ISchedulerFactory sf = new Quartz.Impl.StdSchedulerFactory(); IScheduler sched = sf.GetScheduler(); LogHelper.Info("------GetScheduleJob开始执行-----"); Stream s = new StreamReader(string.Concat(AppDomain.CurrentDomain.BaseDirectory, "XML/JobConfig.xml"), System.Text.Encoding.GetEncoding("UTF-8")).BaseStream; processor.ProcessStream(s, null); processor.ScheduleJobs(new Hashtable(), sched, false); sched.Start(); } catch (Exception ex) { WX.CRM.Common.LogHelper.Error(ex); } } } }