Ejemplo n.º 1
0
        /// <summary>
        /// 获取锁对象
        /// 先判断锁对象是否否在
        /// 如果不存在 则插入锁对象
        /// 再获取锁对象
        /// </summary>
        /// <param name="uniKey"></param>
        /// <returns></returns>
        public LockObject GetLockItem(string uniKey)
        {
            ShowTimeDataContent ctx = new ShowTimeDataContent();
            LockClient          lo  = null;

            if (!ctx.Lock.Any(c => c.Key == uniKey))
            {
                try
                {
                    lo = new Objects.Model.LockClient()
                    {
                        ClinetCnt = 0,
                        Expire    = DateTime.Now,
                        Key       = uniKey,
                        Lock      = 2,
                        Type      = 1
                    };

                    ctx.Lock.Add(lo);
                    ctx.SaveChanges();
                }
                catch (Exception ex)
                {
                }
            }

            if (lo == null || lo.Id == 0)
            {
                lo = ctx.Lock.First(c => c.Key == uniKey);
            }

            LockObject obj = null;

            if (lo != null)
            {
                obj        = new LockObject();
                obj.Id     = lo.Id;
                obj.Key    = lo.Key;
                obj.Lock   = lo.Lock;
                obj.Type   = lo.Type;
                obj.Expire = lo.Expire;
            }

            return(obj);
        }
 private static bool CheckLife(LockClient client)
 {
     return (DateTime.Now - client.Time > MAX_LOCK_LIFETIME);
 }
Ejemplo n.º 3
0
 LockImpl(ClientConnectionManager connectionManager)
 {
     this.connectionManager = connectionManager;
     managedChannel         = connectionManager.NewChannel();
     lockClient             = new LockClient(managedChannel.Channel);
 }