diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2018-08-30 19:38:41 +0300 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2018-08-30 19:38:41 +0300 |
| commit | dd6bc91bb43b70fcae954834cd03c6028f3eefa5 (patch) | |
| tree | 08710978223e7bc2eedae6c7515a241e6b1c64a8 /Software/Visual_Studio/Tango.Core | |
| parent | 5c9bca9cb0bbbb1c448228ef5ac5f898f17e9827 (diff) | |
| parent | a4a0d4973c8eff2bbfe2c8e753f30626c9e9076d (diff) | |
| download | Tango-dd6bc91bb43b70fcae954834cd03c6028f3eefa5.tar.gz Tango-dd6bc91bb43b70fcae954834cd03c6028f3eefa5.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Visual_Studio/Tango.Core')
| -rw-r--r-- | Software/Visual_Studio/Tango.Core/SynchronizedObservableCollection.cs | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/Software/Visual_Studio/Tango.Core/SynchronizedObservableCollection.cs b/Software/Visual_Studio/Tango.Core/SynchronizedObservableCollection.cs index b12c48ded..317d0e249 100644 --- a/Software/Visual_Studio/Tango.Core/SynchronizedObservableCollection.cs +++ b/Software/Visual_Studio/Tango.Core/SynchronizedObservableCollection.cs @@ -13,28 +13,31 @@ namespace Tango.Core { public class SynchronizedObservableCollection<T> : ObservableCollection<T> { - private static object _sync_lock = new object(); - private static object _modify_lock = new object(); + private object _sync_lock = new object(); + private object _modify_lock = new object(); + private SynchronizedObservableCollectionDispatcher _dispatcher; public SynchronizedObservableCollection() : base() { - BindingOperations.EnableCollectionSynchronization(this, _sync_lock); + _dispatcher = new SynchronizedObservableCollectionDispatcher(); + BindingOperations.EnableCollectionSynchronization(this, _modify_lock); } public SynchronizedObservableCollection(IEnumerable<T> collection) : base(collection) { - BindingOperations.EnableCollectionSynchronization(this, _sync_lock); + _dispatcher = new SynchronizedObservableCollectionDispatcher(); + BindingOperations.EnableCollectionSynchronization(this, _modify_lock); } protected override void OnCollectionChanged(NotifyCollectionChangedEventArgs e) { - SynchronizedObservableCollectionDispatcher.Invoke(() => + lock (_modify_lock) { - lock (_modify_lock) + _dispatcher.Invoke(() => { base.OnCollectionChanged(e); - } - }); + }); + } } protected override void InsertItem(int index, T item) @@ -62,11 +65,11 @@ namespace Tango.Core } } - internal static class SynchronizedObservableCollectionDispatcher + internal class SynchronizedObservableCollectionDispatcher { - internal static Dispatcher Dispatcher { get; set; } + internal Dispatcher Dispatcher { get; set; } - static SynchronizedObservableCollectionDispatcher() + internal SynchronizedObservableCollectionDispatcher() { if (Application.Current != null) { @@ -74,11 +77,11 @@ namespace Tango.Core } } - internal static void Invoke(Action action) + internal void Invoke(Action action) { if (Dispatcher != null) { - Dispatcher.BeginInvoke(action); + Dispatcher.Invoke(action); } else { |
