Max() ругается что коллекция была изменена - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день! Выскакивает исключение ValueTradeList.Max(); Коллекция была изменена.
Листинг программы
  1. public class Strategy
  2. {
  3. List<double> PriceTradeList { get; set; }
  4. List<int> ValueTradeList { get; set; }
  5. //конструктор
  6. public Strategy(List<double> price, List<int> value)
  7. {
  8. PriceTradeList = price;
  9. ValueTradeList = value;
  10. Maxvalue = ValueTradeList.Max();
  11. }
  12. private int Str()
  13. {
  14. //......
  15. return rezult;
  16. }
  17. }
Класс вызываю таким способом в методе другого класса:
Листинг программы
  1. int s = new Strategy(PriceTradeList, ValueTradeList).Str()
И бывает что выскакивает исключение на строке Maxvalue = ValueTradeList.Max(); Коллекция была изменена. Вызовов проходит много, бывает за секунду раз по 50. И я так понимаю что исключение вылазит от того, что класс не успевает отработать до конца и отдать результат, а он уже вызывается с обновленными данными. Как можно решить проблему что бы не было исключения? пробовал вот так:
Листинг программы
  1. public Strategy(List<double> price, List<int> value)
  2. {
  3. lock (this)
  4. {
  5. PriceTradeList = price;
  6. ValueTradeList = value;
  7. }
  8. Maxvalue = ValueTradeList.Max();
  9. }
Но не помогает. Подскажите как можно решить проблему?

Решение задачи: «Max() ругается что коллекция была изменена»

textual
Листинг программы
  1. [System.Runtime.Remoting.Contexts.Synchronization]
  2. public class ThreadSafeList<T>:List<T>
  3. {
  4. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.636 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы