我最初使用ObservableClass來每秒存儲CPU使用率信息,並將這些信息移動到一個工作正常的圖表中,但它一直在添加到內存中。使用隊列類來管理內存
得到了一些建議,並移動到選擇一個Queue類,以便能夠在一段時間過去後刪除信息。但與可觀察的類不同,我不能存儲2個參數。
我應該使用隊列和可觀察類還是隊列類都足以解決我的問題。使用可觀察類
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類的時候看到的,我不能夠包括我的櫃檯上保持幾秒鐘的軌道圖表。這對我來說是新的,因此可能會混淆整個概念。還在思考如果我爲Queue Class方式添加和刪除計數器的方式是混亂的。請指教。謝謝。
檢查該SO張貼用於實現固定長度隊列 - http://stackoverflow.com/questions/5852863/fixed-size-queue-which-automatically-dequeues-old-values-upon-new-enques – siddharth
Tnks for reply。我正在尋找一種實現隊列的方式,以便它採用2個類似於ObservableCollection的參數。 – kar