потокобезопасность

потокобезопасность
Atom
4/5/2010
denis


Collection was modified; enumeration operation may not execute.

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

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


Tags:


Thanks:


Mikhail Sukhov

Avatar
Date: 4/5/2010
Reply


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

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

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

Thanks:

denis

Avatar
Date: 4/7/2010
Reply


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

Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy