/// <summary> ///订阅子节点改变事件 /// </summary> /// <param name="path">节点path</param> /// <param name="listener">监听对象</param> /// <returns>子节点列表</returns> public List <string> SubscribeChildNodeChanges(string path, IZKChildNodeListener listener) { _childListeners.TryGetValue(path, out ConcurrentHashSet <IZKChildNodeListener> listeners); if (listeners == null) { listeners = new ConcurrentHashSet <IZKChildNodeListener>(); _childListeners.TryAdd(path, listeners); } listeners.TryAdd(listener); return(Task.Run(async() => await WatchForChildsAsync(path)).ConfigureAwait(false).GetAwaiter().GetResult()); }
/// <summary> /// 移除订阅子节点改变事件 /// </summary> /// <param name="path">节点path</param> /// <param name="childListener">监听对象</param> public void UnSubscribeChildChanges(string path, IZKChildNodeListener childListener) { _childListeners.TryGetValue(path, out ConcurrentHashSet <IZKChildNodeListener> listeners); listeners?.TryRemove(childListener); }