private static void _smsSend_timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { _smsSend_timer.Stop(); try { if (_SmsFlag == "off") { _smsSend_lastPrecent = 101; return; } Model.Model_SmsReord sms = SmsRecordServer.GetNextWaitSendSmsRecord(); if (sms != null) { _smsSend_lastPrecent = 1; System.Console.WriteLine(""); string smsModel = sms.Arrived == Model.MyEnum.Enum_Arrived.InTransit ? _smsTookModel : _smsArriveModel; SmsHandleHelper smsHelp = new SmsHandleHelper(new List <Model.Model_SmsReord>() { sms }, smsModel); smsHelp.ThreadCount = 1; smsHelp.OneCompleted += SmsHelp_OneCompleted; smsHelp.AllCompleted += SmsHelp_AllCompleted; smsHelp.Start(); } else { _smsSend_lastPrecent = 101; System.Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":没有查询到或跳过此次待发送的短信记录"); } } catch (Exception ex) { _smsSend_lastPrecent = 101; System.Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":启动短信发送器失败:" + ex.Message); } finally { while (_smsSend_lastPrecent != 101) { Thread.Sleep(500); } _smsSend_timer.Interval = _smsSendInterval * 1000; _smsSend_timer.Start(); } }
protected override DoWorkResult DoWork(Model_SmsReord sms) { try { string smsContent = _SmsContentModel.Replace("【运单编号】", sms.Number).Replace("【发货单位】", sms.SenderOrg).Replace("【收货单位】", sms.ReceiverOrg).Replace("【车牌号码】", sms.StorageName); sms.SmsContent = smsContent; sms.SendTime = DateTime.Now; if (string.IsNullOrEmpty(sms.SmsReceiver) || sms.SmsReceiver.Length != 11) { sms.SendResult = "接收短信号码不正确"; } else { sms.SendResult = SmsSendHelper.SendSms(sms.SmsReceiver, sms.SmsContent); } } catch (Exception ex) { sms.SendResult = ex.Message; //throw ex; //return DoWorkResult.AbortCurrentThread;//有异常,可以终止当前线程.当然.也可以继续, //return DoWorkResult.AbortAllThread; //特殊情况下 ,有异常终止所有的线程... } finally { try { SmsRecordServer.AddSendSmsRecord(sms); //Console.WriteLine("发送短信:"+sms.SmsContent+" 接收号码:"+sms.SmsReceiver+" 发送结果:"+sms.SendResult); } catch (Exception ex) { LogServer.AddLogText("保存发送记录出错:" + ex.Message, "SMS_" + DateTime.Now.ToString("yyyyMMdd")); } } //return base.DoWork(pendingValue); return(DoWorkResult.ContinueThread); }