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