this.Trader.NewTrades += trades => this.GuiAsync(() => _tradesWindow.Trades.AddRange(trades)); //GuiAsync - это аналог Dispatcher.BeginInvoke из фреймворка
этот _tradesWindow.Trades обновляется часто, каждую секунду по нескольку штук обычно.
Если пробовать в цикле просто обращаться к последнему элементу (только читать) _tradesWindow.Trades, на время прохождения цикла он не меняется, хотя в это время событие уже точно происходит, и не раз. С чем это связано и как это побороть? Если запускать цикл обработки в другом потоке, это поможет? Или вообще невозможен доступ к одному элементу одновременно из разных функций?
Re: Обновление коллекции по событию и одновременное ее чтени
Здравствуйте, D_Alex, Вы писали:
D_A>этот _tradesWindow.Trades обновляется часто, каждую секунду по нескольку штук обычно.
D_A>Если пробовать в цикле просто обращаться к последнему элементу (только читать) _tradesWindow.Trades, на время прохождения цикла он не меняется, хотя в это время событие уже точно происходит, и не раз. С чем это связано и как это побороть? Если запускать цикл обработки в другом потоке, это поможет? Или вообще невозможен доступ к одному элементу одновременно из разных функций?
Без знания кто такой trades сказать что-либо сложно.
Re: Обновление коллекции по событию и одновременное ее чтени
Здравствуйте, D_Alex, Вы писали:
D_A>Есть вот такая подписка на событие
D_A>
D_A>this.Trader.NewTrades += trades => this.GuiAsync(() => _tradesWindow.Trades.AddRange(trades)); //GuiAsync - это аналог Dispatcher.BeginInvoke из фреймворка
D_A>
D_A>этот _tradesWindow.Trades обновляется часто, каждую секунду по нескольку штук обычно.
D_A>Если пробовать в цикле просто обращаться к последнему элементу (только читать) _tradesWindow.Trades, на время прохождения цикла он не меняется, хотя в это время событие уже точно происходит, и не раз. С чем это связано и как это побороть? Если запускать цикл обработки в другом потоке, это поможет? Или вообще невозможен доступ к одному элементу одновременно из разных функций?
Бери Rx и делай обработку асинхронных коллекций.
Re[2]: Обновление коллекции по событию и одновременное ее чт
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, D_Alex, Вы писали:
D_A>>этот _tradesWindow.Trades обновляется часто, каждую секунду по нескольку штук обычно.
D_A>>Если пробовать в цикле просто обращаться к последнему элементу (только читать) _tradesWindow.Trades, на время прохождения цикла он не меняется, хотя в это время событие уже точно происходит, и не раз. С чем это связано и как это побороть? Если запускать цикл обработки в другом потоке, это поможет? Или вообще невозможен доступ к одному элементу одновременно из разных функций?
L>Без знания кто такой trades сказать что-либо сложно.
Trades это ObservableCollection
Re[2]: Обновление коллекции по событию и одновременное ее чт
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, D_Alex, Вы писали:
D_A>>Есть вот такая подписка на событие
D_A>>
D_A>>this.Trader.NewTrades += trades => this.GuiAsync(() => _tradesWindow.Trades.AddRange(trades)); //GuiAsync - это аналог Dispatcher.BeginInvoke из фреймворка
D_A>>
D_A>>этот _tradesWindow.Trades обновляется часто, каждую секунду по нескольку штук обычно.
D_A>>Если пробовать в цикле просто обращаться к последнему элементу (только читать) _tradesWindow.Trades, на время прохождения цикла он не меняется, хотя в это время событие уже точно происходит, и не раз. С чем это связано и как это побороть? Если запускать цикл обработки в другом потоке, это поможет? Или вообще невозможен доступ к одному элементу одновременно из разных функций?
G>Бери Rx и делай обработку асинхронных коллекций.
это как?
Re[3]: Обновление коллекции по событию и одновременное ее чт