ThreadSafeObservableCollection


ThreadSafeObservableCollection
Atom
10/17/2014


Зарание извиняюсь за возможно вопрос не по теме

Использовал в своей программе такую замечательную штуку:
private readonly ThreadSafeObservableCollection<MyTrade> _myfuttrades = new ThreadSafeObservableCollection<MyTrade>();

Все прекрасно работало на версии стокшарп 4.2.3.4
Сегодня решил обновится до новой 4.2.31 и получил вот такою ошибку:
Error 4 'Ecng.Xaml.ThreadSafeObservableCollection<StockSharp.BusinessEntities.MyTrade>' does not contain a constructor that takes 0 arguments

Подскажите пожалуйста как мне теперь заюзать ThreadSafeObservableCollection.

Спасибо.

Tags:


Thanks:


longtrades

Avatar
Date: 10/17/2014
Reply


Господа разработчики , помогите пожалуйста, ответьте что-то .
Thanks:

longtrades

Avatar
Date: 10/17/2014
Reply


Уже нашел сам , вот так нужно :

private readonly ThreadSafeObservableCollection<MyTrade> _myfuttrades = new ThreadSafeObservableCollection<MyTrade>(new ObservableCollectionEx < MyTrade>());

но зачем надо было такое делать ?
Thanks: Mikhail Sukhov

longtrades

Avatar
Date: 11/1/2014
Reply


Ошибка при попытке вызвать метод Count() или isEmpty() в ThreadSafeObservableCollection , версия стокшарп 4.2.35

System.NotSupportedException was unhandled by user code
HResult=-2146233067
Message=Specified method is not supported.
Source=Ecng.Xaml
StackTrace:
at Ecng.Xaml.ThreadSafeObservableCollection`1.get_Count()
at Ecng.Collections.CollectionHelper.IsEmpty[T](ICollection`1 source)
Thanks:

Mikhail Sukhov

Avatar
Date: 11/1/2014
Reply


Кол-во элементов гарантированно можно подсчитать только в гуи потоке. Не в гуи потоке их кол-во хаотичное.
Thanks:

longtrades

Avatar
Date: 11/1/2014
Reply


В версии 4.2.3.4 все работало . Как теперь с этим справится у меня почти вся визуализация построена на этих коллекциях. Никак не дойду чтобы попробовать луа изза все этих нововедений.
Thanks:

Mikhail Sukhov

Avatar
Date: 11/1/2014
Reply


longtrades Go to
В версии 4.2.3.4 все работало .


Если она устривает, то оставайтесь на ней. Лучшее - враг хорошего.
Thanks:

longtrades

Avatar
Date: 11/2/2014
Reply


Полностью устраивает , но работает только с квиком 6.12 и только через ДДЕ, боюсь что-бы квик не выдал обновление несовместимое со старыми версиями, потому и думал попробовать перейти на новую версию стокшарп с Луа.
Кроме этого у меня в планах переход на плазу Сгейт, придется тоже весь свой интерфейс переделывать в угоду новым тенденциям в стокшарп.
Мне кажется не стоит уже вносить изменения в такие базовые елементы как Ecng.
Thanks:

longtrades

Avatar
Date: 11/3/2014
Reply


Нарыл на просторах интернета вот такую реализацию мульти потоковой ObservableCollection, вроде работает нормально.

public class MTObservableCollection<T> : ObservableCollection<T>
{
public override event NotifyCollectionChangedEventHandler CollectionChanged;
protected override void OnCollectionChanged(NotifyCollectionChangedEventArgs e)
{
var eh = CollectionChanged;
if (eh != null)
{
Dispatcher dispatcher = (from NotifyCollectionChangedEventHandler nh in eh.GetInvocationList()
let dpo = nh.Target as DispatcherObject
where dpo != null
select dpo.Dispatcher).FirstOrDefault();

if (dispatcher != null && dispatcher.CheckAccess() == false)
{
dispatcher.Invoke(DispatcherPriority.DataBind, (Action)(() => OnCollectionChanged(e)));
}
else
{
foreach (NotifyCollectionChangedEventHandler nh in eh.GetInvocationList())
nh.Invoke(this, e);
}
}
}
}
Thanks:

longtrades

Avatar
Date: 11/5/2014
Reply


Все таки не так роботает как хотелось бы.

Михаил , не могли бы вы выложить реализацию этих коллекций в стокшарпе версии 4.2.3.4 ?

Спасибо.
Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy