wasSharp – Diff between revs 44 and 54

Subversion Repositories:
Rev:
Show entire fileIgnore whitespace
Rev 44 Rev 54
Line 18... Line 18...
18 /////////////////////////////////////////////////////////////////////////// 18 ///////////////////////////////////////////////////////////////////////////
19 /// <summary> 19 /// <summary>
20 /// An implementation of an observable HashSet. 20 /// An implementation of an observable HashSet.
21 /// </summary> 21 /// </summary>
22 /// <typeparam name="T">the object type</typeparam> 22 /// <typeparam name="T">the object type</typeparam>
23 public class ObservableHashSet<T> : ICollection<T>, INotifyCollectionChanged, IEnumerable<T> 23 public class ObservableConcurrentHashSet<T> : ICollection<T>, INotifyCollectionChanged, IEnumerable<T>
24 { 24 {
25 private readonly ReaderWriterLockSlim _lock = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion); 25 private readonly ReaderWriterLockSlim _lock = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);
26 private readonly HashSet<T> store = new HashSet<T>(); 26 private readonly HashSet<T> store = new HashSet<T>();
Line 27... Line 27...
27   27  
28 public ObservableHashSet(HashSet<T> set) 28 public ObservableConcurrentHashSet(HashSet<T> set)
29 { 29 {
30 _lock.EnterWriteLock(); 30 _lock.EnterWriteLock();
31 try 31 try
32 { 32 {
Line 36... Line 36...
36 { 36 {
37 if (_lock.IsWriteLockHeld) _lock.ExitWriteLock(); 37 if (_lock.IsWriteLockHeld) _lock.ExitWriteLock();
38 } 38 }
39 } 39 }
Line 40... Line 40...
40   40  
41 public ObservableHashSet() 41 public ObservableConcurrentHashSet()
42 { 42 {
Line 43... Line 43...
43 } 43 }
44   44  
45 public ObservableHashSet(T item) 45 public ObservableConcurrentHashSet(T item)
46 { 46 {
47 _lock.EnterWriteLock(); 47 _lock.EnterWriteLock();
48 try 48 try
Line 53... Line 53...
53 { 53 {
54 if (_lock.IsWriteLockHeld) _lock.ExitWriteLock(); 54 if (_lock.IsWriteLockHeld) _lock.ExitWriteLock();
55 } 55 }
56 } 56 }
Line 57... Line 57...
57   57  
58 public ObservableHashSet(ObservableHashSet<T> other) 58 public ObservableConcurrentHashSet(ObservableConcurrentHashSet<T> other)
59 { 59 {
60 _lock.EnterWriteLock(); 60 _lock.EnterWriteLock();
61 try 61 try
62 { 62 {
Line 66... Line 66...
66 { 66 {
67 if (_lock.IsWriteLockHeld) _lock.ExitWriteLock(); 67 if (_lock.IsWriteLockHeld) _lock.ExitWriteLock();
68 } 68 }
69 } 69 }
Line 70... Line 70...
70   70  
71 public ObservableHashSet(IEnumerable<T> list) 71 public ObservableConcurrentHashSet(IEnumerable<T> list)
72 { 72 {
73 _lock.EnterWriteLock(); 73 _lock.EnterWriteLock();
74 try 74 try
75 { 75 {
Line 190... Line 190...
190 if (removed) 190 if (removed)
191 OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, item)); 191 OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, item));
192 return removed; 192 return removed;
193 } 193 }
Line 194... Line 194...
194   194  
195 public int Count => store.Count; 195 public int Count => store.Count();
196   196  
Line 197... Line 197...
197 public bool IsReadOnly => false; 197 public bool IsReadOnly => false;
Line 198... Line 198...
198   198