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>
- {
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д