Update: GDI Ressource Leck mit Kontrollkästchen in ListView-Steuerelement

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 224181 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel wurde archiviert. Er wird im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.
Alles erweitern | Alles schließen

Auf dieser Seite

Problembeschreibung

Beim Laden und Entladen der Formulare mit ListView -Steuerelementen tritt mit Kontrollkästchen, einem großen Arbeitsspeicher und GDI Ressource Speicherverlust.

Ursache

Die Bildliste für das ListView -Steuerelement Kontrollkästchen wird nicht zerstört wird, wenn das Formular entladen wird.

Lösung

Dieses Problem kann umgangen werden durch Festlegen der CheckBoxes -Eigenschaft, zur Laufzeit statt in der Entwurfsumgebung. Die Kontrollkästchen Eigenschaft muss in Activate -Ereignis des Formulars auf True festgelegt und dann in QueryUnload -Ereignis des Formulars auf False festgelegt werden:
  1. Öffnen Sie ein neues Standard-Projekt. Form1 wird standardmäßig generiert.
  2. Im Menü Projekt Wählen Sie Komponenten , wählen Sie " Microsoft Windows-Standardsteuerelemente 6.0 " und klicken Sie auf OK .
  3. Fügen Sie ein zweites Formular (Form2) zum Projekt hinzu.
  4. Fügen Sie ein ListView -Steuerelement (ListView1) in Form2 hinzu. Lassen Sie die Kontrollkästchen Eigenschaft für das Steuerelement auf den Standardwert False festgelegt.
  5. Fügen Sie den folgenden Code hinzu Form2 's Activate -Ereignis:
    Private Sub Form_Activate()
        ' Set the ListView's checkboxes property to True.
        ListView1.Checkboxes = True
        
        ' Do any initialization of the ListView here.
        With ListView1
            .ListItems.Add , , "Item 1"
            .ListItems.Add , , "Item 2"
        End With 
    End Sub
    					
  6. Fügen Sie den folgenden Code hinzu des Form2 QueryUnload -Ereignis:
    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
        ' Set the checkboxes property
        ' of the listview to False.
        ListView1.Checkboxes = False
    End Sub
    					
  7. Fügen Sie eine Befehlsschaltfläche (Command1) zu Form1 hinzu. Fügen Sie zu Codefenster von Form1 folgenden Code hinzu:
    	Private Sub Command1_Click()
        		Dim f As Form2
      		Dim i As Long
      		For i = 0 To 100
        			Set f = New Form2
        			f.Show
        			Unload f
        			DoEvents
        			Set f = Nothing
      		Next i
    	End Sub
    					
  8. Starten eines Programms zum Überwachen von Systemressourcen wie folgt:
    • Windows NT: Geben Sie STRG + ALT + ENTF , und klicken Sie auf Task-Manager . Wählen Sie die Registerkarte Leistung .
    • Windows 95/98/Me: Starten Sie den Systemmonitor, die sich im Ordner Systemprogramme in den Ordner Zubehör befindet. Wenn der Systemmonitor-Tool nicht verfügbar ist, kann es über die Verwendung der Option Software in der Systemsteuerung installiert werden. Klicken Sie im Menü Bearbeiten auf Element hinzufügen . Klicken Sie auf die Kategorie Speicher-Manager , klicken Sie auf die Zugeordnete Speicher Element und klicken Sie auf OK .

  9. Führen Sie das Projekt aus, und klicken Sie auf die Schaltfläche Command1 auf Form1. Beachten Sie die Ressource Verwendung. Ergebnis: übermäßige Ressourcenverwendung tritt nicht auf.

Status

Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel Microsoft-Produkten handelt. Dieser Bug wurde in das nächste Servicepack für Visual Studio 6.0 behoben.

Weitere Informationen zu den Service Packs für Visual Studio finden Sie in folgenden Artikeln der Microsoft Knowledge Base:
194022INFO: Visual Studio 6.0 Service Packs, was, wo, warum

194295SO WIRD´S GEMACHT: Ermitteln, ob ein Visual Studio Service Pack installiert ist
Besuchen Sie die folgende Microsoft-Website, um den neuesten Visual Studio Service Pack herunterzuladen:
http://msdn2.microsoft.com/en-us/vstudio/Aa718353.aspx

Weitere Informationen

Schritte zum Reproduzieren des Verhaltens

  1. Öffnen Sie ein neues Standard-Projekt. Form1 wird standardmäßig generiert.
  2. " Microsoft Windows-Standardsteuerelemente 6.0, " Überprüfen Sie im Menü Projekt Komponenten , und klicken Sie auf OK .
  3. Fügen Sie ein zweites Formular (Form2) zum Projekt hinzu.
  4. Form2 ein ListView -Steuerelement (ListView1) hinzufügen und dessen Kontrollkästchen -Eigenschaft auf True festgelegt.
  5. Fügen Sie ein CommandButton -Steuerelement (Command1) zu Form1 hinzu und fügen Sie den folgenden Code in Form1 des Code-Fenster:
    	Private Sub Command1_Click()
        		Dim f As Form2
      		Dim i As Long
      		For i = 0 To 100
        			Set f = New Form2
        			f.Show
        			Unload f
        			DoEvents
        			Set f = Nothing
      		Next i
    	End Sub
    					
  6. Starten eines Programms zum Überwachen von Systemressourcen wie folgt:
    • Windows NT: Geben Sie STRG + ALT + ENTF und klicken Sie auf Task-Manager. Wählen Sie die Registerkarte Leistung .
    • Windows 95/98/Me: Starten Sie den Systemmonitor, die sich im Ordner Systemprogramme in den Ordner Zubehör befindet. Wenn der Systemmonitor-Tool nicht verfügbar ist, kann es über die Verwendung der Option Software in der Systemsteuerung installiert werden. Klicken Sie im Menü Bearbeiten auf Element hinzufügen . Klicken Sie auf die Kategorie Speicher-Manager , klicken Sie auf die Zugeordnete Speicher Element und klicken Sie auf OK .

  7. Führen Sie das Projekt aus. Klicken Sie auf die Schaltfläche Command1 auf Form1. Auf NT sollten Sie beobachten, wie der vom Prozess verwendete Speicher kontinuierlich während der Ausführung des Programms climbs und nur beim Beenden von Visual Basic oder das kompilierte Programm bereinigt wird. Ergebnis: übermäßige Ressourcenverwendung.

Eigenschaften

Artikel-ID: 224181 - Geändert am: Sonntag, 23. Februar 2014 - Version: 2.2
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual Basic 6.0 Learning Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
Keywords: 
kbnosurvey kbarchive kbmt kbbug kbctrl kbfix kblistview kbresource kbvbp600fix kbvs600sp4fix kbvs600sp5fix KB224181 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 224181
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns