Вы можете заменить
int mostRecnet = 0;
int[] arr = new int[10];
И нужно вручную сосчитать со списком и некоторым базовым мьютекс-кодом:
//Always use a dedicated object to lock onto
private object mutex = new object();
var History = new List<int>();
В галочке вы делаете это:
lock(mutex){
History.Add(mostRecent);
}
И при чтении вы делаете это:
lock(mutex){
//do whatever you need to output the list contents
}
Имейте в виду, что блокировка для вывода предотвратит обработку события тика. И особенно массовые записи в пользовательский интерфейс могут занимать значительное количество времени, легко в 10–100 миллисекунд.