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>
{
}