Announcement

Collapse
No announcement yet.

WPF Controls in TreeView "löschen"

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • WPF Controls in TreeView "löschen"

    Hallo liebe Leute,

    Ich hab eine TreeView gefüllt mit TreeVieItems die wiederum Expander, TreeViewItems, Stackpanels, etc. enthalten...

    Diese TreeView möchte ich nun komplett oder teilweise leeren.
    Reicht es von der TreeView jedes/die entsprechenden Item(s) zu "Removen" oder muß ich mich um die ganzen Items im Detail dann auch irgendwie kümmern.

    Also bleiben die Stackpanels im Expander in der 5 Ebene dann immer noch am Leben und verbrauchen Resourchen oder kommt dann dort bereits der GarbageCollector "vorbei" und die Sache ist für mich erledigt.

    Sehe ich das richtig, daß es davon abhängt wie bzw wo ich so Control z.B. ein StackPanel deklariere. Als klassenweites Objekt ist dessen Lebensdauer ja unabhängig davon ob ich es zu einem TreeViewItem "add"e oder nicht. Wenn ich hingegen die Deklaration nicht Klassenweit sondern in z.B. einer Schleife durchführe (quasi immer mit TreeVieItem X = new TreeVieItem ...) greift dann der GarbageCol. wenn ich das zugehörige Parent remove?

    - bitte / danke für Eure Kommentare

    Gruß
    Michael

  • #2
    Hallo,

    kommt dann dort bereits der GarbageCollector "vorbei" und die Sache ist für mich erledigt.
    So ist es und der GC ist schlau genug um alle nicht benötigten Objekte (= auf die nicht mehr verwiesen wird) zu beseitigen. Das mit der Baumstruktur kapiert er auch.

    Das geht aber nur, wenn nur WPF-Elemente verwendet werden, da die nicht IDisposable implementieren. Andernfalls sollte Dispose aufgerufen werden (damit nicht der Finalizer zuviel Arbeit bekommt).

    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      - danke für die schnelle Antwort.
      Ist mein Verständnis des "wo & wie" ich die Controls deklariere - und die Folgen auch richtig ?

      - danke

      - hab grad einen Versuch gemacht: Button1 added 1000 TRVItems mit je 100Stackpanels mit Labels und btn2 removet alles aus der TreeView. Im Task Manager steigt zuerst der Verbrauch egal ob ich was zwischendurch lösche immer weiter an. Bei ca. 400MB dann ploppt das ganze plötzlich zusammen.....
      Zuletzt editiert von michael99; 23.05.2012, 20:52.

      Comment


      • #4
        Hallo,

        Ist mein Verständnis des "wo & wie" ich die Controls deklariere - und die Folgen auch richtig ?
        Ja. Beim GC gehts nur um das Erreichen von Referenzen.

        Im Task Manager steigt zuerst der Verbrauch egal ob ich was zwischendurch lösche immer weiter an. Bei ca. 400MB dann ploppt das ganze plötzlich zusammen.....
        Der Task-Manager ist zum Einen kein geeignetes Werkzeug um das festzustellen, da gibts bessere wie z.B. Profiler.
        Zum Anderen räumt der GC erst auf, wenn er es für richtig hält und das i.d.R. wenn der Speicher knapp wird. Das hast du hier beobachtet mit dem plötzlichen zusammenploppen.


        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment


        • #5
          - danke

          Gruß
          Michael

          Comment

          Working...
          X