C# System.Threading.Timer 使用方法


 1 public class TimerHelper
 2     {
 3         System.Threading.Timer timer;
 4         public TaskSendMMS tasksendmms { get; set; }
 5         public void Start()
 6         {
 7             timer = new System.Threading.Timer(new TimerCallback(tasksendmms.Execute), null, 100, 30000);
 8             tasksendmms.timer = timer; 
 9         }
10     }
 public class TaskSendMMS
    {

        public Guid MMSId { get; set; }

        public Guid PhonePackageId { get; set; }

        public DateTime ExeTime { get; set; }

        private log log = new log();

        public System.Threading.Timer timer;

        public TaskSendMMS()
        {

        }
        public void Execute(object a)
        {
            try
            {
                log.writelog("=========================================開始執行計划========================================");
                string Extime = ExeTime.ToString("MM-dd HH:mm");
                string today = DateTime.Now.ToString("MM-dd HH:mm");
                if (today.Equals(Extime))//如果時間是執行時間,則執
                {
                    log.writelog("執行時間到了,時間為:" + today);
                    DataBase.DataClasses_MMSDataContext db = new DataBase.DataClasses_MMSDataContext();
                    var mms = db.MMS.Where(c => c.ID == this.MMSId).FirstOrDefault();
                    log.writelog("查詢數據庫MMS記錄名稱:" + mms.Title);
                    if (mms.State != 2) //如果該彩信 不是延遲發送的,直接退出.
                    {
                        log.writelog("該彩信不是延遲發送的,直接退出");
                        if (null != timer)
                        {
                            log.writelog("該彩信不是延遲發送的,直接退出 並關閉timer");
                            timer.Dispose();
                        }
                    }
                    else
                    {
                        log.writelog("執行時間到了,開始調用Web接口立即發送彩信.");
                        //發送彩信
                        Business.Start(this.MMSId.ToString(), this.PhonePackageId.ToString(), "");
                        log.writelog("調用接口成功,完成發送彩信.");
                        mms.State = 1;
                        db.SubmitChanges();
                        log.writelog("彩信狀態,修改為1");
                        if (null != timer)
                        {
                            log.writelog("全部完成 並關閉timer");
                            timer.Dispose();
                        }
                    }
                }
                else
                {
                    log.writelog("執行時間未到! 時間為: " + today);
                }
            }
            catch (Exception ee)
            {
                log.writelog("出現異常信息:" + ee.Message);
            }
            log.writelog("=========================================結束執行計划========================================");
        }
    }
 1 /// <summary>
 2         /// 啟動執行計划 
 3         /// </summary>
 4         /// <param name="MmsId"></param>
 5         /// <param name="packageIDs"></param>
 6         /// <param name="datetime"></param>
 7         /// <returns></returns>
 8         public int StartSendMMs(string MmsId, string packageIDs, string datetime)
 9         {
10             TimerHelper timer = new TimerHelper();
11             timer.tasksendmms = new TaskSendMMS() { ExeTime = DateTime.Parse(datetime), MMSId = new Guid(MmsId), PhonePackageId = new Guid(packageIDs) };
12             timer.Start();
13             return 0;
14         }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM