Hallo zusammen,
ich habe folgendes Problem beim aktualisieren einer ListView, nämlich dass der Code bis zu 13% meines
Prozessors beansprucht, außerdem läuft das Programm nicht mehr wirklich gut.
Ich habe eine ListView mit fogenden Columns: Name ID Status
In dieser ListView werden sämtliche laufende Prozesse des Systems + ID und Status aufgelistet.
Aktualisieren tu ich die ListView folgendermaßen:
Code
Kennt jemand eine bessere Methode eine ListView zu aktualisieren (inkl. ob der Prozess noch ausgeführt wird)
ohne die ListView ständig zu clearen und neu zu befüllen (da die aktualisierung alle 0,5 sek mittels eines Timers ausgeführt wird)
Danke schon mal für alle Antworten
ich habe folgendes Problem beim aktualisieren einer ListView, nämlich dass der Code bis zu 13% meines
Prozessors beansprucht, außerdem läuft das Programm nicht mehr wirklich gut.
Ich habe eine ListView mit fogenden Columns: Name ID Status
In dieser ListView werden sämtliche laufende Prozesse des Systems + ID und Status aufgelistet.
Aktualisieren tu ich die ListView folgendermaßen:
Visual Basic-Quellcode
- Dim schonVorhanden As Boolean = False
- Dim nichtMehrVorhanden As Boolean = True
- For Each Prozess As Process In Process.GetProcesses
- schonVorhanden = False
- For Each idItem As ListViewItem In LbProzesse.Items
- If idItem.SubItems(1).Text = Prozess.Id Then
- schonVorhanden = True
- End If
- If Prozess.Responding = True And Not idItem.SubItems(2).Text = "Wird ausgeführt" Then
- idItem.SubItems(2).Text = "Wird ausgeführt"
- ElseIf Prozess.Responding = False And Not idItem.SubItems(2).Text = "Keine Rückmeldung" Then
- idItem.SubItems(2).Text = "Keine Rückmeldung"
- End If
- Next
- If schonVorhanden = False Then
- With LbProzesse.Items.Add(Prozess.ProcessName)
- .SubItems.Add(Prozess.Id)
- If Prozess.Responding = True Then
- .SubItems.Add("Wird ausgeführt")
- Else
- .SubItems.Add("Keine Rückmeldung")
- End If
- End With
- End If
- Next
- For Each item As ListViewItem In LbProzesse.Items
- nichtMehrVorhanden = True
- For Each Prozess As Process In Process.GetProcesses
- If Prozess.Id = item.SubItems(1).Text Then
- nichtMehrVorhanden = False
- End If
- Next
- If nichtMehrVorhanden = True Then
- Me.Invoke(Sub()
- item.Remove()
- End Sub)
- End If
- Next
Kennt jemand eine bessere Methode eine ListView zu aktualisieren (inkl. ob der Prozess noch ausgeführt wird)
ohne die ListView ständig zu clearen und neu zu befüllen (da die aktualisierung alle 0,5 sek mittels eines Timers ausgeführt wird)
Danke schon mal für alle Antworten