ThreadSafeObservableCollection
Atom Ответить
17.10.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.

Спасибо.

Теги:


Спасибо:




9 Ответов
longtrades

Фотография
Дата: 17.10.2014
Ответить


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

longtrades

Фотография
Дата: 17.10.2014
Ответить


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

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

но зачем надо было такое делать ?
Автор топика
Спасибо: Mikhail Sukhov

longtrades

Фотография
Дата: 01.11.2014
Ответить


Ошибка при попытке вызвать метод 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)
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 01.11.2014
Ответить


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

longtrades

Фотография
Дата: 01.11.2014
Ответить


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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 01.11.2014
Ответить


longtrades Перейти
В версии 4.2.3.4 все работало .


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

longtrades

Фотография
Дата: 01.11.2014
Ответить


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

longtrades

Фотография
Дата: 03.11.2014
Ответить


Нарыл на просторах интернета вот такую реализацию мульти потоковой 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);
}
}
}
}
Автор топика
Спасибо:

longtrades

Фотография
Дата: 05.11.2014
Ответить


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

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

Спасибо.
Автор топика
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy