Обновление коллекции по событию и одновременное ее чтение
От: D_Alex  
Дата: 01.04.11 06:21
Оценка:
Есть вот такая подписка на событие

this.Trader.NewTrades += trades => this.GuiAsync(() => _tradesWindow.Trades.AddRange(trades)); //GuiAsync - это аналог Dispatcher.BeginInvoke из фреймворка


этот _tradesWindow.Trades обновляется часто, каждую секунду по нескольку штук обычно.

Если пробовать в цикле просто обращаться к последнему элементу (только читать) _tradesWindow.Trades, на время прохождения цикла он не меняется, хотя в это время событие уже точно происходит, и не раз. С чем это связано и как это побороть? Если запускать цикл обработки в другом потоке, это поможет? Или вообще невозможен доступ к одному элементу одновременно из разных функций?
Re: Обновление коллекции по событию и одновременное ее чтени
От: Lloyd Россия  
Дата: 05.04.11 15:20
Оценка:
Здравствуйте, D_Alex, Вы писали:

D_A>этот _tradesWindow.Trades обновляется часто, каждую секунду по нескольку штук обычно.


D_A>Если пробовать в цикле просто обращаться к последнему элементу (только читать) _tradesWindow.Trades, на время прохождения цикла он не меняется, хотя в это время событие уже точно происходит, и не раз. С чем это связано и как это побороть? Если запускать цикл обработки в другом потоке, это поможет? Или вообще невозможен доступ к одному элементу одновременно из разных функций?


Без знания кто такой trades сказать что-либо сложно.
Re: Обновление коллекции по событию и одновременное ее чтени
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 05.04.11 15:30
Оценка:
Здравствуйте, 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]: Обновление коллекции по событию и одновременное ее чт
От: D_Alex  
Дата: 05.04.11 16:56
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, D_Alex, Вы писали:


D_A>>этот _tradesWindow.Trades обновляется часто, каждую секунду по нескольку штук обычно.


D_A>>Если пробовать в цикле просто обращаться к последнему элементу (только читать) _tradesWindow.Trades, на время прохождения цикла он не меняется, хотя в это время событие уже точно происходит, и не раз. С чем это связано и как это побороть? Если запускать цикл обработки в другом потоке, это поможет? Или вообще невозможен доступ к одному элементу одновременно из разных функций?


L>Без знания кто такой trades сказать что-либо сложно.


Trades это ObservableCollection
Re[2]: Обновление коллекции по событию и одновременное ее чт
От: D_Alex  
Дата: 05.04.11 16:57
Оценка:
Здравствуйте, 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]: Обновление коллекции по событию и одновременное ее чт
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 05.04.11 17:31
Оценка:
Здравствуйте, D_Alex, Вы писали:


G>>Бери Rx и делай обработку асинхронных коллекций.


D_A>это как?


Вот так
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.