aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.Core/SynchronizedObservableCollection.cs
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2018-08-30 12:35:00 +0300
committerRoy Ben-Shabat <Roy@Twine-s.com>2018-08-30 12:35:00 +0300
commit7171e1a3b7579420f2060798c649088d70565401 (patch)
tree5033e86d5ad91234194a1e0b2306a690d133cd11 /Software/Visual_Studio/Tango.Core/SynchronizedObservableCollection.cs
parentc7c4975fd0010fc666c467105a39b1cd93cb818d (diff)
downloadTango-7171e1a3b7579420f2060798c649088d70565401.tar.gz
Tango-7171e1a3b7579420f2060798c649088d70565401.zip
Implemented In-Memory Transport Adapter.
Implemented Embedded In-Memory Emulator.
Diffstat (limited to 'Software/Visual_Studio/Tango.Core/SynchronizedObservableCollection.cs')
-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
{