Schmuck Ákos wrote:
Az eredeti problémának semmi összefüggése nincs modális ablakokkal, a TableLayoutPanel.Controls.Clear() kapcsán került elő a probléma.Sziasztok!Ha kicsit késve is, de bekapcsolódnék a beszélgetésbe... Szóval tesztelgettem a problémát, meg közben Google-özgettem egy kicsit, és úgy a második-harmadik kulccsszó kombinációra (c# dispose winforms) első helyen kiadott egy lapot amivel a gond megoldható (javítható), bár nem autómatikusan, de azért talán kezelhető mértékben.A link: http://www.reflectionit.nl/Blog/PermaLink7a2db2fc-eff3-4ad0-9e8c-2a8392a60c29.aspxA lényeg: Modálisan megjelenített ablakoknak a Dispose fv-e nem hívódik meg autómatikusan! Csináltam egy kis példaprogit (előre is bocs, egy-két elég csúnya dolgot csinálok benne :) ami szépen demonstrálja a dolgot. Mivel ha jól rémlik TabControl / TabPage-ekről volt szó, én is egy TabControl-t tettem fel, egy gombbal lehet bele pakolgatni TabPage-eket, minden TabPage-en egyetlen származtatott label van, ami nem csinál mást, mint konstruktorra kiírja, hogy ő létrejött, Dispose-ra meg kiírja hogy halálán van :) Alul van három gomb, szépen meg lehet figyelni, hogy a sima Show, ill. a "módosított" ShowModal szépen műxik, de a sima ShowModal-ra egy Dispose sem hívódik meg (direkt kiraktam egy gombra a GC.Collect() -et, de persze ez nem a gond forrása, nem is segít)A "módosítás" egyébként csak annyi, hogy egy 'using' blokkba raktam a form megjelenítését. Tehát ha minden helyen, ahol modálisan jelenítetek meg ablakot, átírjátok using-ra (vagy a cikkben mutatott try/finally-s megoldásra) akkor minden olyan leak-et bezártatok, ami a control-okhoz kötődik (saját osztályok persze maradnak, de ha azokat pl. a formon deklaráltátok, akkor a form Dispose-át lehet override-olni, és be lehet oda tenni a saját osztályok Dispose-át) Nem tudom ez mennyi munka, de talán kevesebb, mint leak-eket keresgélni...
-- Az eletben vannak szabalyok Nehanyat meg lehet kerulni, a tobbit pedig meg lehet szegni (The Matrix) -----BEGIN PGP PUBLIC KEY BLOCK----- Version: OpenKeyServer v1.2 Comment: Extracted from belgium.keyserver.net mQGiBEE/HTYRBACInacMGc8B/lkX3CXh5D9wUDlmza4hoatNZjJmWNnPWC9c0h2V Pi9zYJ1bVqeUnNDzCRpovPdwrswWvb9WpVOS0A7TafzWxCYud6gN8g5KiC7cSuJV cxI0uv3jWSjUkLnECqTpm9piM4WptXrdFLxUyrKPu+Nl82QSjfdbB+8xXwCg+rWO KeOZZGGGIYWu+rZ0M/MqyCUD/jqQVc7alF8+5y//zNDml3THTc3ljK8CLcHxFv6F uADmvHSePRTR1ACBV3dTxL8awvanRsXC25LOuYgM1hF9RRwof59xNtXVttvo724b FDR+oRDVKyoEm6Istfn9xbbNqRqPfk83SHvect/hlHsfgaTBKd+IRAEkbMIdRin/ E45fA/0bzklqLGj4a8qSxMMvZ1Ib+2RmH5I6o9o33FY3Nmc7IEXJizyTyQaASYCx ldjuRmfWSOP3gQRrH5owuZq5KBCC/PNMNnUsA4noFmvIilA/9UYqMtQ0BNr+miIM 9/LV70ZbBHVpDLjb2baMjbKrmCFf9rjlc17fFsWk5ZJuE3/UxLQrWmltbGVyIEF0 dGlsYSBUYW3DoXMgPGhpamFzenVAaGxmc2xpbnV4Lmh1PohXBBMRAgAXBQJBPx02 BQsHCgMEAxUDAgMWAgECF4AACgkQ+3OFVYni0PSysACffD6VDtoer3aBe8Gpvn8e gwiNNH8AmwcmBIrZeCOeobIuZZp3CCOgQblIuQENBEE/HTkQBACKNzv7gS0fgeiO AMoss2bbO7X9GuO3ufc3+zx2yGV7SvYAuyWLOSMhs1ZYBVp6IawDY88zEx81oxRj Jd4zO8h/3BI9cmjZ4NAmdv7lWjTs0I0ijFnemcFQaffxN8vIB9DqA4oyJ0A/bS7J 0E/i13sr7hRgB6NZbpy4PSSkczggvwADBQP8D3eakqeJHf1yLmw1XmQVDxHLxtrI VL0TShFEfMGU/MLfKpcmrd43EsSondsNNm8jv4b9Y/Wgc8XPQQrfPodC5mKt8mQC F/ovWBFs46YvhS5pojQmp6i9octTWw2OqVn3QgrBFqm4QvayLE9wRLm/xgaFApVI 4RiOOEA6SidURGCIRgQYEQIABgUCQT8dOQAKCRD7c4VVieLQ9HoZAJ4xR5Y1qlnC LTn1GkbEW0Va+72EqwCfQTP37ylZGrvpYnFoewBIMuLFHM8= =K0/l -----END PGP PUBLIC KEY BLOCK-----