<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>WinForms</title><link>https://www.dotnetzone.gr:443/cs/forums/12/ShowForum.aspx</link><description>Θέματα για rich client / windows εφαρμογές, σε οποιαδήποτε γλώσσα (VB.NET, C#, managed C++, κ.α.)</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Memory Leaks</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/14098.aspx</link><pubDate>Sat, 17 Jun 2006 23:59:10 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:14098</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/14098.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=14098</wfw:commentRss><description>Σε extreme περιπτώσεις ίσως να είναι ορθό να φωνάξουμε εμείς τον GC. Αλλά γενικά φροντίζει καλύτερα από εμάς για εμάς. :) &lt;br /&gt;
&lt;br /&gt;
Να πω γενικά οτι αν δεν κάνουμε Nothing το reference τότε ο GC ενδέχεται να αργήσει αρκετά. Προσέξτε οτι εκχωρώ την "πάχιά" φόρμα σε private variable και την κάνω nothing στο closing της. Γενικά ακόμα και χωρίς να χρησιμοποιήσω το GC.Collect, θα έχω καλύτερη διαχείριση από απλά να την αφήσω στην τύχη της.&lt;br /&gt;
&lt;br /&gt;</description></item><item><title>Απ: Memory Leaks</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/14096.aspx</link><pubDate>Sat, 17 Jun 2006 22:40:58 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:14096</guid><dc:creator>Panagiotis Kefalidis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/14096.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=14096</wfw:commentRss><description>Καλό θα ήτανε να αποφεύγουμε να καλούμε τον GC..Καλύτερα είναι να τα "μαζεύει" μόνος του οταν το θεωρεί αυτός.. Αν και ίσως σε περιπτώσεις όπως το παράδειγμα του Σωτήρη, να είναι καλό το manual call του.. (Ακριβώς επειδή η form έχει 10000 rows, και ξέρουμε ότι πρέπει να αδείασει..)</description></item><item><title>Απ: Memory Leaks</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/14092.aspx</link><pubDate>Sat, 17 Jun 2006 19:48:19 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:14092</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/14092.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=14092</wfw:commentRss><description>&lt;P&gt;Κανοντας αυτό:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Private&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;WithEvents&lt;/span&gt; _myform &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; Form2&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Private&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Sub&lt;/span&gt; Button1_Click(&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ByVal&lt;/span&gt; sender &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; System.&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Object&lt;/span&gt;, &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ByVal&lt;/span&gt; e &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; System.EventArgs) &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Handles&lt;/span&gt; Button1.Click&lt;br /&gt;        _myform &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;New&lt;/span&gt; Form2&lt;br /&gt;        _myform.Show()&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;End&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Sub&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Private&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Sub&lt;/span&gt; _myform_Closed(&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ByVal&lt;/span&gt; sender &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Object&lt;/span&gt;, &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;ByVal&lt;/span&gt; e &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;As&lt;/span&gt; System.EventArgs) &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Handles&lt;/span&gt; _myform.Closed&lt;br /&gt;        _myform &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Nothing&lt;/span&gt;&lt;br /&gt;        GC.Collect()&lt;br /&gt;    &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;End&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;Sub&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Δηλαδή μηδενίζοντας το reference στη Form2 (η "βαριά" μας φόρμα - εβαλα εκεί ενα datatable με 10000 rows) και αναγκάζοντας τον Garbage Collector να τη μαζέψει, βλέπω σχετική σταθερότητα στη μνήμη. &lt;/P&gt;
&lt;P&gt;Ομως, το αντίθετο δεν νοειται απαραίτητα ως memory leak. Απλά ο GC τρέχει όποτε θεωρεί εκεινος βέλτιστο, και ελευθερώνει κάποια μνήμη.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: Memory Leaks</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/14076.aspx</link><pubDate>Fri, 16 Jun 2006 22:01:55 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:14076</guid><dc:creator>kkara</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/14076.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=14076</wfw:commentRss><description>Σύμφωνα με τον κώδικα σου είναι πολύ λογικό να δεσμεύεται μνήμη κάθε φορά που ανοίγεις τη φόρμα. Αυτό συμβαίνει γιατί κάθε φορά δημιουργείς ΝΕΑ φόρμα, ενώ η παλιά δεν έχει γίνει προφανώς ακόμα dispose (αυτό θα το κάνει ο GC ... κάποτε). &lt;br /&gt;
&lt;br /&gt;
Αν θες να το αντιμετωπίσεις αυτό τότε θα πρέπει να χρησιμοποιήσεις singleton φόρμα, δηλαδή άπαξ και δημιουργήσεις μια φορά το αντικείμενο της φόρμας, να μην το ξαναδημιουργείς αλλά απλά να κάνεις Show.</description></item><item><title>Απ: Memory Leaks</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/14070.aspx</link><pubDate>Fri, 16 Jun 2006 19:39:10 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:14070</guid><dc:creator>BurnOut</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/14070.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=14070</wfw:commentRss><description>Την φόρμα την ανοίγω με τον παρακάτω τρόπο&lt;br /&gt;
&lt;br /&gt;
Private Sub OnNew()&lt;br /&gt;
&lt;br /&gt;
    Dim myForm As New MYForm &lt;br /&gt;
&lt;br /&gt;
   myForm.Show()&lt;br /&gt;
&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
1.Στην φόρμα δεν χρησιμοποιώ unmanaged resources&lt;br /&gt;
&lt;br /&gt;
2.Αν φτιάξεις οποιαδήποτε φόρμα και βάλεις κάποια controls θα δεις στον task manager οτι ενώ την ανοιγοκλείνεις, η μνήμη συνεχώς αυξάνει.&lt;br /&gt;
&lt;br /&gt;
3. Τα μόνα δεδομένα που  διατηρώ σε singleton κλάση είναι οι παράμετροι εφαρμογής ώστε απο όλες τις φόρμες να "βλέπω" το πώς έχει παραμετροποιήσει ο χρήστης την εφαρμογή και μια  singleton κλάση η οποία που δίνει το connection &lt;br /&gt;
&lt;br /&gt;
4. Γενικά τα δεδομένα τα φορτώνω σε datasets, έχουν δηλωθεί ως πχ&lt;br /&gt;
&lt;br /&gt;
Friend WithEvents dsAddress As CustomControls.xsdAddressForCombo&lt;br /&gt;
&lt;br /&gt;
στην φόρμα που ανήκουν οπότε και λογικά καταστέφονται από τον gc οταν κλείσω την φόρμα και αυτός ενεργοποιηθεί</description></item><item><title>Απ: Memory Leaks</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/14061.aspx</link><pubDate>Fri, 16 Jun 2006 18:22:29 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:14061</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/14061.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=14061</wfw:commentRss><description>Δεν μπορώ να σκεφτώ κάτι ουσιαστικό. Μήπως μεσα απο ορισμένες διευκρινιστικες ερωτήσεις όμως, θα μπορούσαμε να βγάλουμε κάποια άκρη;&lt;br /&gt;
&lt;br /&gt;
Για παράδειγμα: &lt;br /&gt;
&lt;br /&gt;
Τις φόρμες τις εκχωρεις σε μεταβλητές ανοίγοντάς τις εσύ (π.χ. myForm=new Form1, myForm.Show());&lt;br /&gt;
&lt;br /&gt;
Οι φόρμες έχουν unmanaged στοιχεία μέσα; (Ειπες οτι έχουν, αλλά μηπως αυτά ευθύνονται για τα leaks μια και δεν γίνονται σωστά dispose);&lt;br /&gt;
&lt;br /&gt;
Διατηρείς δεδομένα σε singleton classes ή shared μεταβλητές;&lt;br /&gt;
&lt;br /&gt;
Εχεις δοκιμάσει να παίξεις απευθείας με τον Garbage Collector (CG) και να δεις τι γίνεται με τη διαθέσιμη μνήμη σου; &lt;br /&gt;
&lt;br /&gt;
Ισως αν μπορέσουμε να απαντησουμε στα παραπάνω να βρούμε κάποια άκρη.</description></item><item><title>Memory Leaks</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/14059.aspx</link><pubDate>Fri, 16 Jun 2006 16:24:18 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:14059</guid><dc:creator>BurnOut</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/14059.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=12&amp;PostID=14059</wfw:commentRss><description>&lt;p class="MsoNormal"&gt;Χρησιμοποιώ .net 1.1 SP1. Παρατήρησα ότι η μνήμη&amp;nbsp; που
δεσμεύουν οι φόρμες δεν αποδεσμεύεται όταν τις κλείνω. Συνήθως αυτό συμβαίνει όταν
χρησιμοποιούνται umanaged resources αλλά το δοκίμασα σε απλές φόρμες και καθώς
τις ανοιγοκλείνω o task manager δείχνει να δεσμεύει ολοένα και περισσότερη
μνήμη. Το αποτέλεσμα είναι εφαρμογές (με φόρμες με πολλά controls &lt;span style=""&gt;tabpages&lt;/span&gt;&lt;span&gt; &lt;/span&gt;σε
&lt;span style=""&gt;tabpages&lt;/span&gt;&lt;span&gt; &lt;/span&gt;κλπ που φορτώνουν «πολλά» δεδομένα από τον SQL Server)
να&amp;nbsp; υποβαθμίζουν τόσο πολύ την διαθέσιμη μνήμη του συστήματος ώστε να
χρειάζεται να γίνει επανεκκίνηση για να λειτουργήσει κάποιος ικανοποιητικά. Καμιά
ιδέα?? &lt;/p&gt;</description></item></channel></rss>