← Zurück

ThreadSafeObservableCollection

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

Использовал в своей программе такую замечательную штуку: 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.

Спасибо.

War dieses Thema hilfreich?

Thema teilen

Kommentare (9)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

longtrades
longtrades Autor

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

longtrades
longtrades Autor

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

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

но зачем надо было такое делать ?

Mikhail Sukhov
longtrades
longtrades Autor

Ошибка при попытке вызвать метод 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.ThreadSafeObservableCollection1.get_Count() at Ecng.Collections.CollectionHelper.IsEmpty(ICollection1 source)

Mikhail Sukhov
Mikhail Sukhov

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

longtrades
longtrades Autor

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

Mikhail Sukhov
Mikhail Sukhov

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

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

longtrades
longtrades Autor

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

longtrades
longtrades Autor

Нарыл на просторах интернета вот такую реализацию мульти потоковой 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
longtrades Autor

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

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

Спасибо.