потокобезопасность
Atom Ответить
05.04.2010


Collection was modified; enumeration operation may not execute.

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

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


Теги:


Спасибо:




2 Ответов
Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 05.04.2010
Ответить


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

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

var myList = new List<int> { 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

Фотография
Дата: 06.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