aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.Core
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2021-05-23 15:56:52 +0300
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2021-05-23 15:56:52 +0300
commit98a07a369f2dcf849b4b571ac269b4bff92b03d5 (patch)
tree33ea2b9063daba34ae4be14ab52c47c435b704be /Software/Visual_Studio/Tango.Core
parent59337c44830916d106ee98e892f7c3f95780a011 (diff)
downloadTango-98a07a369f2dcf849b4b571ac269b4bff92b03d5.tar.gz
Tango-98a07a369f2dcf849b4b571ac269b4bff92b03d5.zip
SynchronizedObservableCollection fix on machine service.
Diffstat (limited to 'Software/Visual_Studio/Tango.Core')
-rw-r--r--Software/Visual_Studio/Tango.Core/SynchronizedObservableCollection.cs63
1 files changed, 52 insertions, 11 deletions
diff --git a/Software/Visual_Studio/Tango.Core/SynchronizedObservableCollection.cs b/Software/Visual_Studio/Tango.Core/SynchronizedObservableCollection.cs
index 317d0e249..e4deec540 100644
--- a/Software/Visual_Studio/Tango.Core/SynchronizedObservableCollection.cs
+++ b/Software/Visual_Studio/Tango.Core/SynchronizedObservableCollection.cs
@@ -11,38 +11,65 @@ using System.Windows.Threading;
namespace Tango.Core
{
+ public static class SynchronizedObservableCollectionConfig
+ {
+ public static bool DisableSynchronization { get; set; }
+ }
+
public class SynchronizedObservableCollection<T> : ObservableCollection<T>
{
private object _sync_lock = new object();
private object _modify_lock = new object();
private SynchronizedObservableCollectionDispatcher _dispatcher;
+ public bool DisableSynchronization { get; set; } = SynchronizedObservableCollectionConfig.DisableSynchronization;
+
public SynchronizedObservableCollection() : base()
{
- _dispatcher = new SynchronizedObservableCollectionDispatcher();
- BindingOperations.EnableCollectionSynchronization(this, _modify_lock);
+ if (!DisableSynchronization)
+ {
+ _dispatcher = new SynchronizedObservableCollectionDispatcher();
+ BindingOperations.EnableCollectionSynchronization(this, _modify_lock);
+ }
}
public SynchronizedObservableCollection(IEnumerable<T> collection) : base(collection)
{
- _dispatcher = new SynchronizedObservableCollectionDispatcher();
- BindingOperations.EnableCollectionSynchronization(this, _modify_lock);
+ if (!DisableSynchronization)
+ {
+ _dispatcher = new SynchronizedObservableCollectionDispatcher();
+ BindingOperations.EnableCollectionSynchronization(this, _modify_lock);
+ }
}
protected override void OnCollectionChanged(NotifyCollectionChangedEventArgs e)
{
- lock (_modify_lock)
+ if (!DisableSynchronization)
{
- _dispatcher.Invoke(() =>
+ lock (_modify_lock)
{
- base.OnCollectionChanged(e);
- });
+ _dispatcher.Invoke(() =>
+ {
+ base.OnCollectionChanged(e);
+ });
+ }
+ }
+ else
+ {
+ base.OnCollectionChanged(e);
}
}
protected override void InsertItem(int index, T item)
{
- lock (_modify_lock)
+ if (!DisableSynchronization)
+ {
+ lock (_modify_lock)
+ {
+ base.InsertItem(index, item);
+ }
+ }
+ else
{
base.InsertItem(index, item);
}
@@ -50,7 +77,14 @@ namespace Tango.Core
protected override void RemoveItem(int index)
{
- lock (_modify_lock)
+ if (!DisableSynchronization)
+ {
+ lock (_modify_lock)
+ {
+ base.RemoveItem(index);
+ }
+ }
+ else
{
base.RemoveItem(index);
}
@@ -58,7 +92,14 @@ namespace Tango.Core
protected override void ClearItems()
{
- lock (_modify_lock)
+ if (!DisableSynchronization)
+ {
+ lock (_modify_lock)
+ {
+ base.ClearItems();
+ }
+ }
+ else
{
base.ClearItems();
}