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(); } }