Collection was modified; enumeration operation may not execute.
беру лимиты по бумагам, каждую строку запихиваю в структуру, и делаю список структур. в другом потоке (стратегия) проверяю наличие и позу по эмитенту... и получаю в лоб :) достаточно высылать раз в секунду ордера по рынку и проверять состояние портфеля.
весь вопрос в том что я не знаю в какую сторону копать, чтобы оно было потокобезопасно
评论 (2)
登录 或 创建账户, 登录或注册以发表评论
А это не потокобезопасность =)
простой пример:
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
спасибо, помогло так: var tmp = SampleConsole.Program.chemodan.ToArray(); var _papir = tmp.FirstOrDefault(p => p.code.Equals(order_tri["SECCODE"])); if (_papir.code == null) continue;