Max() ругается что коллекция была изменена - C#
Формулировка задачи:
Добрый день!
Выскакивает исключение ValueTradeList.Max(); Коллекция была изменена.
Класс вызываю таким способом в методе другого класса:
И бывает что выскакивает исключение на строке Maxvalue = ValueTradeList.Max(); Коллекция была изменена.
Вызовов проходит много, бывает за секунду раз по 50. И я так понимаю что исключение вылазит от того, что класс не успевает отработать до конца и отдать результат, а он уже вызывается с обновленными данными.
Как можно решить проблему что бы не было исключения?
пробовал вот так:
Но не помогает.
Подскажите как можно решить проблему?
public class Strategy { List<double> PriceTradeList { get; set; } List<int> ValueTradeList { get; set; } //конструктор public Strategy(List<double> price, List<int> value) { PriceTradeList = price; ValueTradeList = value; Maxvalue = ValueTradeList.Max(); } private int Str() { //...... return rezult; } }
int s = new Strategy(PriceTradeList, ValueTradeList).Str()
public Strategy(List<double> price, List<int> value) { lock (this) { PriceTradeList = price; ValueTradeList = value; } Maxvalue = ValueTradeList.Max(); }
Решение задачи: «Max() ругается что коллекция была изменена»
textual
Листинг программы
[System.Runtime.Remoting.Contexts.Synchronization] public class ThreadSafeList<T>:List<T> { }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д