示例#1
0
        public bool RegisterEvent(EnumDailyevent eventEnum, DailyeventStartDelegate startDelegate)
        {
            var eventType = (int)eventEnum;

            if (_dailyeventDic.ContainsKey(eventType))
            {
                return(true);
            }
            var config = CacheFactory.ActivityCache.GetDailyevent(eventType);

            if (config == null)
            {
                SystemlogMgr.Error("Dailyevent register", "can't find dailyevent config,id:" + eventType);
                return(false);
            }
            DateTime curDate = DateTime.Today;

            _rwl.AcquireWriterLock(Timeout.Infinite);
            try
            {
                var dailyEvent = MonitorDailyeventMgr.GetByZoneEvent(ShareUtil.ZoneId, eventType);
                if (dailyEvent == null)
                {
                    var lastDate = curDate.AddDays(-1);
                    dailyEvent                = new MonitorDailyeventEntity();
                    dailyEvent.EventType      = eventType;
                    dailyEvent.ZoneId         = ShareUtil.ZoneId;
                    dailyEvent.OpenTime       = CalTime(lastDate, config.OpenHour, config.OpenMinute);
                    dailyEvent.StartTime      = CalTime(lastDate, config.StartHour, config.StartMinute);
                    dailyEvent.EndTime        = CalTime(lastDate, config.EndHour, config.EndMinute);
                    dailyEvent.RecordDate     = lastDate;
                    dailyEvent.NextInvokeTime = dailyEvent.OpenTime.AddDays(1);
                    dailyEvent.Status         = 0;
                    dailyEvent.UpdateTime     = DateTime.Now;
                    MonitorDailyeventMgr.Insert(dailyEvent);
                }
                _dailyeventDic.Add(eventType, new DailyEventInfo(dailyEvent, config, startDelegate));
                LogHelper.Insert(eventEnum.ToString() + " register success.", LogType.Info);
                return(true);
            }
            finally
            {
                _rwl.ReleaseWriterLock();
            }
        }