public static void Subscribe(string filePath, OnFileChangedDelegate handler) { Verify.ArgumentNotNullOrEmpty(filePath, "filePath"); Verify.ArgumentNotNull(handler, "handler"); EnsureInitialization(); int counterValue = Interlocked.Increment(ref _counter); if (counterValue % 100 == 0) { ClearDeadReferences(); } var weakInvocationList = new List <Pair <MethodInfo, WeakReference> >(); foreach (Delegate func in handler.GetInvocationList()) { var targetObject = func.Target; if (targetObject == null) { weakInvocationList.Add(new Pair <MethodInfo, WeakReference>(func.Method, null)); } else { weakInvocationList.Add(new Pair <MethodInfo, WeakReference>(func.Method, new WeakReference(handler.Target))); } } string key = filePath.ToLowerInvariant(); lock (_syncRoot) { if (_subscribers.ContainsKey(key)) { ReadOnlyCollection <Pair <MethodInfo, WeakReference> > oldList = _subscribers[key]; var newList = new ReadOnlyCollection <Pair <MethodInfo, WeakReference> >( new List <Pair <MethodInfo, WeakReference> >(oldList.Concat(weakInvocationList))); _subscribers[key] = newList; } else { _subscribers.Add(key, new ReadOnlyCollection <Pair <MethodInfo, WeakReference> >(weakInvocationList)); } } }
public static void Subscribe(string filePath, OnFileChangedDelegate handler) { Verify.ArgumentNotNullOrEmpty(filePath, "filePath"); Verify.ArgumentNotNull(handler, "handler"); EnsureInitialization(); int counterValue = Interlocked.Increment(ref _counter); if (counterValue % 100 == 0) { ClearDeadReferences(); } var weakInvocationList = new List<Pair<MethodInfo, WeakReference>>(); foreach (Delegate func in handler.GetInvocationList()) { var targetObject = func.Target; if (targetObject == null) { weakInvocationList.Add(new Pair<MethodInfo, WeakReference>(func.Method, null)); } else { weakInvocationList.Add(new Pair<MethodInfo, WeakReference>(func.Method, new WeakReference(handler.Target))); } } string key = filePath.ToLowerInvariant(); lock (_syncRoot) { if (_subscribers.ContainsKey(key)) { ReadOnlyCollection<Pair<MethodInfo, WeakReference>> oldList = _subscribers[key]; var newList = new ReadOnlyCollection<Pair<MethodInfo, WeakReference>>( new List<Pair<MethodInfo, WeakReference>>(oldList.Concat(weakInvocationList))); _subscribers[key] = newList; } else { _subscribers.Add(key, new ReadOnlyCollection<Pair<MethodInfo, WeakReference>>(weakInvocationList)); } } }
public void SubscribeOnFileChanged(IFile file, OnFileChangedDelegate handler) { FileChangeNotificator.Subscribe(file as FileSystemFileBase, handler); }
public static void Subscribe(FileSystemFileBase file, OnFileChangedDelegate handler) { Verify.ArgumentNotNull(file, "file"); Subscribe(file.SystemPath, handler); }
/// <exclude /> public static void SubscribeOnChanged(this IFile file, OnFileChangedDelegate handler) { IFileStreamManager manager = FileStreamManagerLocator.GetFileStreamManager(file.GetType()); manager.SubscribeOnFileChanged(file, handler); }
/// <exclude /> public static void SubscribeOnChanged(this IFile file, OnFileChangedDelegate handler) { IFileStreamManager manager = FileStreamManagerLocator.GetFileStreamManager(file.GetType()); manager.SubscribeOnFileChanged(file, handler); }
public static void Subscribe(FileSystemFileBase file, OnFileChangedDelegate handler) { Verify.ArgumentNotNull(file, "file"); Subscribe(file.SystemPath, handler); }
public void SubscribeOnFileChanged(IFile file, OnFileChangedDelegate handler) { throw new NotSupportedException(); }
public void SubscribeOnFileChanged(IFile file, OnFileChangedDelegate handler) { FileChangeNotificator.Subscribe(file as FileSystemFileBase, handler); }
/// <exclude /> public void SubscribeOnFileChanged(IFile file, OnFileChangedDelegate handler) { // Do nothing... }
/// <exclude /> public void SubscribeOnFileChanged(IFile file, OnFileChangedDelegate handler) { // Do nothing... }