aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.Core
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2018-08-30 19:38:41 +0300
committerShlomo Hecht <shlomo@twine-s.com>2018-08-30 19:38:41 +0300
commitdd6bc91bb43b70fcae954834cd03c6028f3eefa5 (patch)
tree08710978223e7bc2eedae6c7515a241e6b1c64a8 /Software/Visual_Studio/Tango.Core
parent5c9bca9cb0bbbb1c448228ef5ac5f898f17e9827 (diff)
parenta4a0d4973c8eff2bbfe2c8e753f30626c9e9076d (diff)
downloadTango-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.cs29
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
{