[C#] как быстро обновить listview?
Всем привет!
Я пытаюсь сделать программу, похожую на Диспетчер задач.
Эта программа контролирует использование памяти процесса.
Итак, я создал поток для обновления, и он периодически запускается в течение 1 секунды.
Если данные об использовании памяти процесса будут обновлены, они будут показаны в listview.
Но обновление происходит очень медленно.
Я приложил свой пример кода.
Мой пример кода.[^]
Не могли бы вы дать мне совет?
Спасибо :)
Что я уже пробовал:
public void UpdateThread(object aParameters) { object[] lParameters = (object[])aParameters; Form1 lThis = (Form1)lParameters[0]; while (lThis._isWorkingThread) { Thread.Sleep(1000); lThis.BeginInvoke(new UpdateListViewDelegate(lThis.updateList), new object[0] { }); } } public void updateList() { Process[] allProc = Process.GetProcesses(); foreach (var p in allProc) { if (processes.ContainsKey(p.Id.ToString()) == false) { ProcessInfo info = new ProcessInfo(); info.name = p.ProcessName; info.workingSet = p.WorkingSet64; info.peakWorkingSet = p.PeakWorkingSet64; info.privateMemorySize = p.PrivateMemorySize64; processes.Add(p.Id.ToString(), info); } else { ProcessInfo info = processes[p.Id.ToString()]; info.workingSet = p.WorkingSet64; info.peakWorkingSet = p.PeakWorkingSet64; info.privateMemorySize = p.PrivateMemorySize64; } ListViewItem item; item = FindItem(p.Id.ToString()); if (item == null) { item = listViewProcessList.Items.Add(p.ProcessName); item.SubItems.Add(p.Id.ToString()); item.SubItems.Add(string.Format("{0:#,###} K", (p.WorkingSet64 / 1024)).PadLeft(7)); item.SubItems.Add(string.Format("{0:#,###} K", (p.PeakWorkingSet64 / 1024)).PadLeft(7)); item.SubItems.Add(string.Format("{0:#,###} K", (p.PrivateMemorySize64 / 1024)).PadLeft(7)); } else { item.SubItems[2].Text = string.Format("{0:#,###} K", (p.WorkingSet64 / 1024)).PadLeft(7); item.SubItems[3].Text = string.Format("{0:#,###} K", (p.PeakWorkingSet64 / 1024)).PadLeft(7); item.SubItems[4].Text = string.Format("{0:#,###} K", (p.PrivateMemorySize64 / 1024)).PadLeft(7); } } }