Обновление коллекции и обращение к ней из другого потока
[CODE=C#]this.Trader.NewOrders += orders => this.GuiAsync(() => _ordersWindow.Orders.AddRange(orders));//GuiAsync это аналог Dispatcher.BeginInvoke из фреймворка, с которым работаю [/CODE]
есть таймер, в котором вызывается функция
[CODE=C#]public void OnTimedEvent(object source, ElapsedEventArgs e)
{
if (MainWindow.Instance._tradesWindow.Trades[MainWindow.Instance._tradesWindow.Trades.Count() - 1].Time >= startTime)
{
var trade = MainWindow.Instance._tradesWindow.Trades[MainWindow.Instance._tradesWindow.Trades.Count() - 1];
if (trade.Price != Cc)
MainWindow.Instance.Dispatcher.BeginInvoke(new CheckNewStrikeA1Delegate(CheckNewStrikeA1), trade.Price);
}
}[/CODE]
внутри функции происходят некоторые действия, после которых меняется _ordersWindow.Orders
[CODE=C#]void CheckNewStrikeA1(double strike)
{
lock (myLock2)
{
A1_P_51(strike);
}
if (IsNewTrade() == false) //эта функция смотрит в _ordersWindow.Orders
return;
lock (myLock2)
{
A1_P_53();
}
}[/CODE]
Но, если _ordersWindow.Orders изменилось после прохождения A1_P_51(strike), IsNewTrade изменений не видит. Видит только при следующем тике таймера.
В какую сторону смотреть?
ObservableCollection не пробовали использовать?
Цитата: hardcase
ObservableCollection не пробовали использовать?
они как раз такие =)