потокобезопасность
Atom
05.04.2010
denis


Collection was modified; enumeration operation may not execute.

беру лимиты по бумагам, каждую строку запихиваю в структуру, и делаю список структур. в другом потоке (стратегия) проверяю наличие и позу по эмитенту... и получаю в лоб :) достаточно высылать раз в секунду ордера по рынку и проверять состояние портфеля.

весь вопрос в том что я не знаю в какую сторону копать, чтобы оно было потокобезопасно


Теги:


Спасибо:


Mikhail Sukhov

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


А это не потокобезопасность =)

простой пример:

var myList = new List { 1, 2, 3 };

foreach (var item in myList) myList.Remove(item);

упадет на первой же итерации цикла foreach.

Почему? Потому что нельзя делать перебор значений и при это модифицировать коллекцию. Как избежать:

foreach (var item in myList.ToArray()) myList.Remove(item);

Когда мы сделали ToArray - мы создали новую коллекцию (массив в данном случае). По ней уже идет перебор, а изменяем мы myList.

На английском более развернуто, чем у меня

http://blogs.msdn.com/kevin_ransom/archive/2005/03/14/395101.aspx

Спасибо:

denis

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


спасибо, помогло так: var tmp = SampleConsole.Program.chemodan.ToArray(); var _papir = tmp.FirstOrDefault(p => p.code.Equals(order_tri["SECCODE"])); if (_papir.code == null) continue;

Спасибо:


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

loading
clippy