internal FileLockerAtomicExecutor(IWaitforRedial waitforRedial)
        {
            WaitforRedial = waitforRedial;
            var di = new DirectoryInfo(AtomicActionFolder);

            if (!di.Exists)
            {
                di.Create();
            }
            Task.Factory.StartNew(() =>
            {
                // 用于删除异常关机残留的文件. 在使用的都是被锁住的, 无法删除
                while (true)
                {
                    foreach (var action in Directory.GetFiles(AtomicActionFolder))
                    {
                        //IntPtr vHandle = _lopen(action, OfReadwrite | OfShareDenyNone);
                        //if (vHandle != HfileError)
                        //{
                        try
                        {
                            File.Delete(action);
                        }
                        catch (Exception)
                        {
                            // ignored
                        }
                        //}
                    }
                    Thread.Sleep(1000);
                }
                // ReSharper disable once FunctionNeverReturns
            });
        }
Exemplo n.º 2
0
 public RedisAtomicExecutor(RedisRedialManager waitforRedial)
 {
     if (waitforRedial == null)
     {
         throw new RedialException("IWaitforRedial can't be null.");
     }
     WaitforRedial       = waitforRedial;
     _redisRedialManager = waitforRedial;
 }
 internal ZookeeperAtomicExecutor(IWaitforRedial waitforRedial)
 {
     if (waitforRedial == null)
     {
         throw new RedialException("IWaitforRedial can't be null.");
     }
     WaitforRedial = waitforRedial;
     if (Zk.Exists(_root, false) == null)
     {
         Zk.Create(_root, null, Ids.OPEN_ACL_UNSAFE, CreateMode.Persistent);
     }
 }