Klare Kontrollen entsorgt sie nicht - was ist das Risiko?

8

Es gibt mehrere Threads ( a , b , c usw.) über die Tatsache, dass Clear () Elemente in den .NET-Komponentencontainern nicht ist > Dispose (indem Sie Dispose ( true ) aufrufen.

)

Am häufigsten werden die Clear-ed-Komponenten in der Anwendung nicht mehr verwendet. Daher müssen sie nach dem Löschen aus den übergeordneten Containern explizit disponiert werden.

Vielleicht ist es eine gute Idee, dass die Clear -Methode der Sammlung einen Bool-Parameter dispose hat, der, wenn er in "true" ist, auch die Auflistungselemente vor dem Entfernen aus der Liste disponiert?

    
serhio 28.12.2009, 14:29
quelle

2 Antworten

15

Nach solchen Änderungen zu fragen, ist sinnlos, das Windows Forms-Team wurde vor einiger Zeit aufgelöst. Im Wartungsmodus werden nur Sicherheitsprobleme und Betriebssystemkompatibilitäten berücksichtigt.

Es ist ansonsten einfach genug, um eine eigene Methode dafür zu erstellen:

%Vor%

Jetzt können Sie schreiben:

%Vor%     
Hans Passant 28.12.2009, 16:06
quelle
0

Bei der Beantwortung der Frage "Was ist das Risiko?" geht das Risiko (oder ein Risiko) aus den Fenstergriffen aus, obwohl es eine Weile dauern kann.

Ich habe einen "Fenster-Designer", der aus einem Skript ein Fenster generiert. Jedes Mal, wenn ich das Skript ändere, wird das Fenster neu erstellt (die Steuerelemente werden gelöscht und neu geschrieben). Mit einem besonders komplexen Fenster und mit Controls.Clear() jedes Mal, nach vielen dutzenden von Aktualisierungen, werde ich irgendwann eine "no more window handles" -Ausnahme bekommen und keine weiteren Steuerelemente mehr erstellen können.

Einfach genug, um den Aufruf von Controls.Clear() durch etwas wie:

zu ersetzen %Vor%     
Dave Cousineau 18.04.2017 16:23
quelle