Первоначально я использовал ObservableClass для хранения информации о моем CPU каждый раз и переводил эту информацию в график, который работал, но продолжал добавлять в память.Использование класса очереди для управления памятью
Получил некоторые советы и перешел к выбору класса очереди, чтобы иметь возможность удалять информацию по прошествии определенного периода времени. Но, в отличие от наблюдаемого класса, я не могу хранить 2 аргумента.
Должен ли я использовать как класс очереди, так и наблюдаемый класс или класс очереди для моей проблемы.
Исходные коды с использованием Observable класса
class CPUClass{
ObservableCollection<KeyValuePair<double, double>> cpuChartList = new ObservableCollection<KeyValuePair<double, double>>();
//this method is fired off every second
private void timerChange(){
counter += 1;
//cpuCurrent is the current cpu usage value every second
cpuChartList.Add(new KeyValuePair<double, double>(counter, cpuCurrent));
}
}
//On the MainWindow
cpulineChart.DataContext = CPUClass.cpuChartList;
Пытаюсь с очередью класса
class CPUClass{
Queue queueCPU = new Queue();
//to hold past 30 seconds cpu usage information at any point
private void timerChange(){
counter += 1;
if (queueCPU.Count > 30)
{
queueCPU.Dequeue();
counter -= 1;
}
queueCPU.Enqueue(cpuCurrent);//
}
}
//On the MainWindow
cpulineChart.DataContext = CPUClass.queueCPU;
Как вы можете видеть при использовании очереди класса, я не в состоянии включить свой счетчик, чтобы следить за секунды на график. Это ново для меня, таким образом, может испортить всю концепцию. Также размышляйте, является ли способ, которым я добавляю и удаляю счетчик для класса Queue Class, бесполезен. Пожалуйста посоветуй. Спасибо.
Проверить это SO размещать для реализации очереди фиксированной длины - http://stackoverflow.com/questions/5852863/fixed-size-queue-which-automatically-dequeues-old-values-upon-new-enques – siddharth
Tnks для ответа. Я ищу способ реализации очереди таким образом, чтобы она принимала 2 аргумента, аналогичные ObservableCollection. – kar