<?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>.NET Framework</title><link>https://www.dotnetzone.gr:443/cs/forums/14/ShowForum.aspx</link><description>Θέματα για threading, remoting, reflection, exception handling, security, regex κλπ.</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: =Nothing ή Dispose</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/4589.aspx</link><pubDate>Wed, 24 Aug 2005 16:07:47 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:4589</guid><dc:creator>axaros</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/4589.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=4589</wfw:commentRss><description>&lt;P&gt;Άρη είσαι πρώτος !!! Ευχαριστώ ...&lt;/P&gt;</description></item><item><title>=Nothing ή Dispose</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/4579.aspx</link><pubDate>Wed, 24 Aug 2005 06:14:09 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:4579</guid><dc:creator>Aris</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/4579.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=4579</wfw:commentRss><description>Δες &lt;A href="http://msdn.microsoft.com/msdnmag/issues/1200/GCI2/default.aspx"&gt;αυτό το link&lt;/A&gt; (αγνόησε το πρώτο κομμάτι για weak references). &lt;BR&gt;&lt;BR&gt;Άρης</description></item><item><title>Απ: Απ:Re: =Nothing ή Dispose</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/4526.aspx</link><pubDate>Tue, 23 Aug 2005 17:26:32 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:4526</guid><dc:creator>axaros</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/4526.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=4526</wfw:commentRss><description>&lt;P&gt;Να ρωτήσω και κάτι άλλο :&lt;BR&gt;Πως περνάει ένα object από το generation 0 έως το (τελευταίο) 2 του GC;&lt;/P&gt;</description></item><item><title>Απ:Re: =Nothing ή Dispose</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/4429.aspx</link><pubDate>Fri, 19 Aug 2005 20:42:58 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:4429</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/4429.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=4429</wfw:commentRss><description>&lt;P&gt;Γιαννη, σωστά αυτά που λές. Θα σου πώ όμως άλλη μία περίπτωση στην οποία θα ήθελε κάποιος να καλεί μόνος του τη dispose:&lt;/P&gt;
&lt;P&gt;Εχεις ένα composite object. Περιέχει εκατοντάδες μικρά collections τα οποία τα χρησιμοποιεί μόνο αυτό. Φορτώνεις συνεπώς στη μνήμη ένα "παχύ" object το οποίο το θέλεις για να κάνεις συγκεκριμένες εργασίες. Θελεις να το ξεφορτωθείς όσο πιό γρήγορα μπορείς. &lt;/P&gt;
&lt;P&gt;Επίσης εγώ θα διαφωνήσω με τη λογική του GC για τα objects τα οποία έχουν dispose. Αν υπάρχει, την καλώ ακριβώς όταν τελειώσω τη δουλειά που κάνω με αυτά. Πιστεύω οτι είναι πιό αποτελεσματικο, ειδικά σε ado.net objects. Αυτή είναι όμως μια υποκειμενική άποψη και ανοιχτή συνεπώς σε κριτική.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ:Re: =Nothing ή Dispose</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/4424.aspx</link><pubDate>Fri, 19 Aug 2005 20:14:02 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:4424</guid><dc:creator>rousso</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/4424.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=4424</wfw:commentRss><description>&lt;P&gt;Παιδιά εγώ το θέμα το αντιμετωπίζω ως εξης:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Κατ' αρχήν δεν καλώ ποτέ μόνος μου την Dispose(). Την καλεί στην ώρα της ο Garbage Collector. Τελεία. 
&lt;LI&gt;Πότε είναι η ώρα της; Όταν δεν υπάρχει πουθενά κανένα άλλο reference για το συγκεκριμένο object. 
&lt;LI&gt;Επίσης δεν φτιάχνω ποτέ Dispose method (αφήνω δηλαδή το inherited implementation να τρέχει), &lt;/LI&gt;&lt;/UL&gt;
&lt;H1&gt;...ΕΚΤΟΣ ΕΑΝ.... &lt;/H1&gt;
&lt;P&gt;έχω &lt;STRONG&gt;ο,τιδήποτε unmanaged&lt;/STRONG&gt; μέσα στην class μου (π.χ. όταν έχω χρησιμοποιήσει com interop για να μιλήσω με com components)&amp;nbsp;οπότε είναι απαραίτητο να κάνω implement την&amp;nbsp;Dispose.&amp;nbsp;Σε κάθε άλλη περίπτωση δεν χρειάζεται να ανησυχείς για τίποτα. Οτιδήποτε είναι managed το κάνει ο garbage collector μόνος του. Ο,τιδήποτε ΔΕΝ είναι managed το καθαρίζεις μόνος σου στην Dispose (την οποία δεν την καλείς εσύ πουθενά αλλά την καλεί ο Garbage Collecor μέσω της Finalize (η οποία είναι αντίστοιχη του destructor που ξέραμε στην c++).&lt;/P&gt;
&lt;P&gt;Ο μόνος λόγος να implementάρεις και να καλέσεις μόνος σου την Dispose είναι όταν για κάποιο λόγο "βιάζεσαι" να ελευθερώσεις κάποια resources (συνήθως unmanaged) τα οποία δεν μπορείς να περιμένεις τον garbage collector να τα ελευθερώσει στην πρώτη ευκαιρία.&lt;/P&gt;
&lt;P&gt;Π.χ. έχεις ανοικτά connections με COM objects&amp;nbsp;για να &amp;nbsp;"μιλάς" με μια άλλη εφαρμογή που ήδη τρέχει ταυτοχρόνως ενώ εσύ κλείνεις την δικιά σου εφαρμογή. Θέλεις να κλείσεις τα connections αυτά αμέσως για να αποφύγεις π.χ. ένα GPF που μπορεί να προκαλέσει η άλλη εφαρμογή αν δεν γίνει η αποδέσμευση των COM που χρησιμοποιείς εγκαίρως και με τη σειρά που θέλεις. Καλείς την Dispose επιτόπου να τα κλείσει. Αν την καλέσεις ως Disposed(true) θα κάνει το ίδιο &lt;STRONG&gt;και για τα&lt;/STRONG&gt; &lt;STRONG&gt;managed&lt;/STRONG&gt; resources που χρησιμοποιεί, οπότε αν κι εκείνα με την σειρά τους έχουν unmanaged resources θα τα απελευθερώσουν αμέσως κ.ο.κ....&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Δεν ξεχνάς ποτέ&lt;/STRONG&gt; στην Dispose (όποτε την κάνεις implement) να βάλεις στο τέλος μια κλήση στην GC.SuppressFinalize(this); ώστε να μην πάει ο garbage collector να ξανακάνει την δουλειά και "σπάσει τα μούτρα του".&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Άρα γενικά, δεν ανησυχείς αν δεν έχεις ανοικτά unmanaged resources&lt;/STRONG&gt;. Αν έχεις, τότε&amp;nbsp;κάνεις ότι λέει &lt;A href="/cs/forums/3162/ShowPost.aspx#3162" target=_blank&gt;&lt;STRONG&gt;στο VB παράδειγμά του ο cap&lt;/STRONG&gt; σε παραπάνω post&lt;/A&gt;. Επίσης αν έχεις .NET Framwork SDK (MSDN) στο PC σου δες &lt;A href="ms-help://MS.NETFrameworkSDKv1.1/cpguidenf/html/cpconimplementingdisposemethod.htm" target=_blank&gt;αυτό το link&lt;/A&gt;&amp;nbsp;ή ψάξε στο MSDN για το topic με θέμα "Implementing a Dispose Method". Ο παρακάτω κώδικας σε C# είναι copy/paste από το παράδειγμα που έχει εκεί...&lt;/P&gt;&lt;PRE class=source&gt;&lt;FONT color=green&gt;// Design pattern for the base class.&lt;/FONT&gt;
&lt;FONT color=green&gt;// By implementing IDisposable, you are announcing that instances&lt;/FONT&gt;
&lt;FONT color=green&gt;// of this type allocate scarce resources.&lt;/FONT&gt;
&lt;FONT color=blue&gt;public&lt;/FONT&gt; &lt;FONT color=blue&gt;class&lt;/FONT&gt; BaseResource: IDisposable
{
   &lt;FONT color=green&gt;// Pointer to an external unmanaged resource.&lt;/FONT&gt;
   &lt;FONT color=blue&gt;private&lt;/FONT&gt; IntPtr handle;
   &lt;FONT color=green&gt;// Other managed resource this class uses.&lt;/FONT&gt;
   &lt;FONT color=blue&gt;private&lt;/FONT&gt; Component Components;
   &lt;FONT color=green&gt;// Track whether Dispose has been called.&lt;/FONT&gt;
   &lt;FONT color=blue&gt;private&lt;/FONT&gt; &lt;FONT color=blue&gt;bool&lt;/FONT&gt; disposed = &lt;FONT color=maroon&gt;false&lt;/FONT&gt;;

   &lt;FONT color=green&gt;// Constructor for the BaseResource object.&lt;/FONT&gt;
   &lt;FONT color=blue&gt;public&lt;/FONT&gt; BaseResource()
   {
      &lt;FONT color=green&gt;// Insert appropriate constructor code here.&lt;/FONT&gt;
   }

   &lt;FONT color=green&gt;// Implement IDisposable.&lt;/FONT&gt;
   &lt;FONT color=green&gt;// Do not make this method virtual.&lt;/FONT&gt;
   &lt;FONT color=green&gt;// A derived class should not be able to override this method.&lt;/FONT&gt;
   &lt;FONT color=blue&gt;public&lt;/FONT&gt; &lt;FONT color=blue&gt;void&lt;/FONT&gt; Dispose()
   {
      Dispose(&lt;FONT color=maroon&gt;true&lt;/FONT&gt;);
      &lt;FONT color=green&gt;// Take yourself off the Finalization queue &lt;/FONT&gt;
      &lt;FONT color=green&gt;// to prevent finalization code for this object&lt;/FONT&gt;
      &lt;FONT color=green&gt;// from executing a second time.&lt;/FONT&gt;
      GC.SuppressFinalize(&lt;FONT color=blue&gt;this&lt;/FONT&gt;);
   }

   &lt;FONT color=green&gt;// Dispose(bool disposing) executes in two distinct scenarios.&lt;/FONT&gt;
   &lt;FONT color=green&gt;// If disposing equals true, the method has been called directly&lt;/FONT&gt;
   &lt;FONT color=green&gt;// or indirectly by a user's code. Managed and unmanaged resources&lt;/FONT&gt;
   &lt;FONT color=green&gt;// can be disposed.&lt;/FONT&gt;
   &lt;FONT color=green&gt;// If disposing equals false, the method has been called by the &lt;/FONT&gt;
   &lt;FONT color=green&gt;// runtime from inside the finalizer and you should not reference &lt;/FONT&gt;
   &lt;FONT color=green&gt;// other objects. Only unmanaged resources can be disposed.&lt;/FONT&gt;
   &lt;FONT color=blue&gt;protected&lt;/FONT&gt; &lt;FONT color=blue&gt;virtual&lt;/FONT&gt; &lt;FONT color=blue&gt;void&lt;/FONT&gt; Dispose(&lt;FONT color=blue&gt;bool&lt;/FONT&gt; disposing)
   {
      &lt;FONT color=green&gt;// Check to see if Dispose has already been called.&lt;/FONT&gt;
      &lt;FONT color=blue&gt;if&lt;/FONT&gt;(!&lt;FONT color=blue&gt;this&lt;/FONT&gt;.disposed)
      {
         &lt;FONT color=green&gt;// If disposing equals true, dispose all managed &lt;/FONT&gt;
         &lt;FONT color=green&gt;// and unmanaged resources.&lt;/FONT&gt;
         &lt;FONT color=blue&gt;if&lt;/FONT&gt;(disposing)
         {
            &lt;FONT color=green&gt;// Dispose managed resources.&lt;/FONT&gt;
            Components.Dispose();
         }
         &lt;FONT color=green&gt;// Release unmanaged resources. If disposing is false, &lt;/FONT&gt;
         &lt;FONT color=green&gt;// only the following code is executed.&lt;/FONT&gt;
         CloseHandle(handle);
         handle = IntPtr.Zero;
         &lt;FONT color=green&gt;// Note that this is not thread safe.&lt;/FONT&gt;
         &lt;FONT color=green&gt;// Another thread could start disposing the object&lt;/FONT&gt;
         &lt;FONT color=green&gt;// after the managed resources are disposed,&lt;/FONT&gt;
         &lt;FONT color=green&gt;// but before the disposed flag is set to true.&lt;/FONT&gt;
         &lt;FONT color=green&gt;// If thread safety is necessary, it must be&lt;/FONT&gt;
         &lt;FONT color=green&gt;// implemented by the client.&lt;/FONT&gt;

      }
      disposed = &lt;FONT color=maroon&gt;true&lt;/FONT&gt;;         
   }

   &lt;FONT color=green&gt;// Use C# destructor syntax for finalization code.&lt;/FONT&gt;
   &lt;FONT color=green&gt;// This destructor will run only if the Dispose method &lt;/FONT&gt;
   &lt;FONT color=green&gt;// does not get called.&lt;/FONT&gt;
   &lt;FONT color=green&gt;// It gives your base class the opportunity to finalize.&lt;/FONT&gt;
   &lt;FONT color=green&gt;// Do not provide destructors in types derived from this class.&lt;/FONT&gt;
   ~BaseResource()      
   {
      &lt;FONT color=green&gt;// Do not re-create Dispose clean-up code here.&lt;/FONT&gt;
      &lt;FONT color=green&gt;// Calling Dispose(false) is optimal in terms of&lt;/FONT&gt;
      &lt;FONT color=green&gt;// readability and maintainability.&lt;/FONT&gt;
      Dispose(&lt;FONT color=maroon&gt;false&lt;/FONT&gt;);
   }

   &lt;FONT color=green&gt;// Allow your Dispose method to be called multiple times,&lt;/FONT&gt;
   &lt;FONT color=green&gt;// but throw an exception if the object has been disposed.&lt;/FONT&gt;
   &lt;FONT color=green&gt;// Whenever you do something with this class, &lt;/FONT&gt;
   &lt;FONT color=green&gt;// check to see if it has been disposed.&lt;/FONT&gt;
   &lt;FONT color=blue&gt;public&lt;/FONT&gt; &lt;FONT color=blue&gt;void&lt;/FONT&gt; DoSomething()
   {
      &lt;FONT color=blue&gt;if&lt;/FONT&gt;(&lt;FONT color=blue&gt;this&lt;/FONT&gt;.disposed)
      {
         &lt;FONT color=blue&gt;throw&lt;/FONT&gt; &lt;FONT color=blue&gt;new&lt;/FONT&gt; ObjectDisposedException();
      }
   }
}

&lt;FONT color=green&gt;// Design pattern for a derived class.&lt;/FONT&gt;
&lt;FONT color=green&gt;// Note that this derived class inherently implements the &lt;/FONT&gt;
&lt;FONT color=green&gt;// IDisposable interface because it is implemented in the base class.&lt;/FONT&gt;
&lt;FONT color=blue&gt;public&lt;/FONT&gt; &lt;FONT color=blue&gt;class&lt;/FONT&gt; MyResourceWrapper: BaseResource
{
   &lt;FONT color=green&gt;// A managed resource that you add in this derived class.&lt;/FONT&gt;
   &lt;FONT color=blue&gt;private&lt;/FONT&gt; ManagedResource addedManaged;
   &lt;FONT color=green&gt;// A native unmanaged resource that you add in this derived class.&lt;/FONT&gt;
   &lt;FONT color=blue&gt;private&lt;/FONT&gt; NativeResource addedNative;
   &lt;FONT color=blue&gt;private&lt;/FONT&gt; &lt;FONT color=blue&gt;bool&lt;/FONT&gt; disposed = &lt;FONT color=maroon&gt;false&lt;/FONT&gt;;

  &lt;FONT color=green&gt;// Constructor for this object.&lt;/FONT&gt;
   &lt;FONT color=blue&gt;public&lt;/FONT&gt; MyResourceWrapper()
   {
      &lt;FONT color=green&gt;// Insert appropriate constructor code here.&lt;/FONT&gt;
   }

   &lt;FONT color=blue&gt;protected&lt;/FONT&gt; &lt;FONT color=blue&gt;override&lt;/FONT&gt; &lt;FONT color=blue&gt;void&lt;/FONT&gt; Dispose(&lt;FONT color=blue&gt;bool&lt;/FONT&gt; disposing)
   {
      &lt;FONT color=blue&gt;if&lt;/FONT&gt;(!&lt;FONT color=blue&gt;this&lt;/FONT&gt;.disposed)
      {
         &lt;FONT color=blue&gt;try&lt;/FONT&gt;
         {
            &lt;FONT color=blue&gt;if&lt;/FONT&gt;(disposing)
            {
               &lt;FONT color=green&gt;// Release the managed resources you added in&lt;/FONT&gt;
               &lt;FONT color=green&gt;// this derived class here.&lt;/FONT&gt;
               addedManaged.Dispose();         
            }
            &lt;FONT color=green&gt;// Release the native unmanaged resources you added&lt;/FONT&gt;
            &lt;FONT color=green&gt;// in this derived class here.&lt;/FONT&gt;
            CloseHandle(addedNative);
            &lt;FONT color=blue&gt;this&lt;/FONT&gt;.disposed = &lt;FONT color=maroon&gt;true&lt;/FONT&gt;;
         }
         &lt;FONT color=blue&gt;finally&lt;/FONT&gt;
         {
            &lt;FONT color=green&gt;// Call Dispose on your base class.&lt;/FONT&gt;
            &lt;FONT color=blue&gt;base&lt;/FONT&gt;.Dispose(disposing);
         }
      }
   }
}

&lt;FONT color=green&gt;// This derived class does not have a Finalize method&lt;/FONT&gt;
&lt;FONT color=green&gt;// or a Dispose method without parameters because it inherits &lt;/FONT&gt;
&lt;FONT color=green&gt;// them from the base class.&lt;/FONT&gt;
&lt;/PRE&gt;
&lt;P&gt;αυτά κι από εμένα...&lt;/P&gt;
&lt;P&gt;Φιλικά&lt;BR&gt;rousso&lt;/P&gt;</description></item><item><title>Απ:Re: =Nothing ή Dispose</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/4419.aspx</link><pubDate>Fri, 19 Aug 2005 18:44:02 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:4419</guid><dc:creator>axaros</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/4419.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=4419</wfw:commentRss><description>&lt;P&gt;Σωτήρη σε ευχαριστώ θερμά !!!!&lt;BR&gt;Στη διάθεση σας και ένα ακόμη σχετικό link με το θέμα : &lt;A href="http://www.devcity.net/Articles/93/gc_manage.aspx"&gt;http://www.devcity.net/Articles/93/gc_manage.aspx&lt;/A&gt;&lt;/P&gt;</description></item><item><title>Απ:Re: =Nothing ή Dispose</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/4418.aspx</link><pubDate>Fri, 19 Aug 2005 18:38:30 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:4418</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/4418.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=4418</wfw:commentRss><description>&lt;P&gt;Εννοείς με το using; Το thread-safety του dispose δεν εξαρτάται, σύμφωνα βέβαια με τις φτωχές μου γνώσεις, τις οποίες μπορεί καθένας να διορθώσει ελεύθερα, από την ΚΛΗΣΗ του dispose method αλλά από το πώς είναι υλοποιημένο το ίδιο το dispose method. Εξ'ου και το pattern που αναφερεται σε προηγούμενη απάντηση στο post. &lt;/P&gt;
&lt;P&gt;Αρα, αν το dispose method έχει υλοποιηθεί λαμβάνοντας υπόψη του το thread-safety, τότε χρησιμοποιώντας το using είσαι εξ'όρισμού thread safe, μια και το using δεν κάνει τίποτα άλλο από το να καλεί την dispose method του αντικειμένου που χρησιμοποιείται.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ:Re: =Nothing ή Dispose</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/4415.aspx</link><pubDate>Fri, 19 Aug 2005 18:30:52 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:4415</guid><dc:creator>axaros</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/4415.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=4415</wfw:commentRss><description>Σωτήρη από περιέργεια : σε αυτή την περίπτωση το Dispose είναι Thread safe;</description></item><item><title>Απ:Re: =Nothing ή Dispose</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/4412.aspx</link><pubDate>Fri, 19 Aug 2005 17:50:30 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:4412</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/4412.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=4412</wfw:commentRss><description>&lt;P&gt;Πανο, πολύ σωστά. Μας το είχαν δείξει και στο DevDays. Το Using, το οποίο κληρονομήθηκε από τη C#, κάνει ακριβως αυτό που περιγράφεις. &lt;/P&gt;
&lt;P&gt;Αρα λοιπον για να επανέλθουμε στο αρχικο θέμα,&amp;nbsp;το dispose χρησιμοποιείται γενικά όταν υπάρχει λόγος. Θα δείς οτι ακόμα και στο ίδιο το framework, όλα τα objects που φτιάχνεις δεν διαθέτουν dispose method. Μονο αυτά για τα οποία υπάρχει λόγος. &lt;/P&gt;
&lt;P&gt;Ενα θέμα είναι λοιπόν πότε κάνουμε implement το idisposable interface εντός της κλάσης μας και πότε χρησιμοποιούμε dispose εξωτερικά. Ενας εμπειρικός κανόνας: Αν το object διαθέτει dispose method, καλό είναι να τη χρησιμοποιήσουμε.&lt;/P&gt;
&lt;P&gt;Αν βέβαια χρησιμοποιήσουμε, όπως λες παραπάνω, το Using, δεν χρειάζεται να ανησυχούμε για αυτό.&lt;/P&gt;</description></item><item><title>Απ:Re: =Nothing ή Dispose</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/4411.aspx</link><pubDate>Fri, 19 Aug 2005 17:42:23 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:4411</guid><dc:creator>axaros</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/4411.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=4411</wfw:commentRss><description>&lt;P&gt;Παρεπιπτόντως βρήκα το εξής σε κάποιο post για VB.NET 2005:&lt;/P&gt;
&lt;P&gt;Public Class Class1&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Public Sub Go()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Using sw As StreamWriter = New StreamWriter("C:\hey.txt")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sw.Write("HEY")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT size=4&gt;End Using&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Sub&lt;/P&gt;
&lt;P&gt;End Class&lt;/P&gt;
&lt;P&gt;via &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csspec/html/vclrfcsharpspec_8_13.asp"&gt;MSDN&lt;/A&gt;: "The &lt;FONT size=4&gt;using statement&lt;/FONT&gt; obtains one or more resources, executes a statement, and then disposes of the resource." &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Re: =Nothing ή Dispose</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/3162.aspx</link><pubDate>Wed, 29 Jun 2005 00:08:28 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:3162</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/3162.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=3162</wfw:commentRss><description>Επιπρόσθετα:&lt;br /&gt;&lt;br /&gt;Λόγω του οτι τo dispose γενικά ΔΕΝ είναι threadsafe, υπάρχει ένα common pattern που ακολουθείται για να κάνεις dispose ένα object. Σου παραθέτω τον κώδικα παρακάτω:&lt;br /&gt;&lt;br /&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;#Region " Constructors / Destructors "&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;'/// &amp;lt;summary&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;'/// Default constructor.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;'/// &amp;lt;/summary&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;Public Sub New&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;'TODO: Insert Necessary object construction code&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;End Sub&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;'/// &amp;lt;summary&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;'/// Standard Dispose Implementation Pattern, part II.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;'/// Overridable and Overloaded Dispose procedure is called by both&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;'/// Dispose and Finalize Not Overridable procedures.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;'/// &amp;lt;/summary&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;'/// &amp;lt;param name="p_bDisposing"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;'/// If its value is True, then this procedure is called by User calling&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;'/// Dispose(). Else it is called by System calling Finalize().&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;'/// &amp;lt;/param&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;'/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;Protected Overridable Overloads Sub &lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;Dispose(&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;ByVal &lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;p_bDisposing &lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;As Boolean&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;'User called Dispose(True)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;If &lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;(p_bDisposing = &lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;True&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;) &lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;Then&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;'TODO: Free other state (managed objects).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;End If&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;'TODO: Free own state (unmanaged objects).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;'Set large fields to null, etc.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;End Sub&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;'/// &amp;lt;summary&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;'/// Standard Dispose Implementation Pattern, part I.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;'/// Not Overridable Dispose procedure just calls overloaded Dispose(True).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;'/// &amp;lt;/summary&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;Public Overloads Sub &lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;Dispose() &lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;Implements &lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;System.IDisposable.Dispose&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;'Call common overloaded and overridable disposing procedure&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;'to perform all necessary finalization actions.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;Dispose(&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;True&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;'Remove this object from the Finalization Queue, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;'because Dispose procedure has already been called.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;GC.SuppressFinalize(&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;Me&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;End Sub&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;'/// &amp;lt;summary&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;'/// Standard Dispose Implementation Pattern, part III.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;'/// Not Overridable Finalize procedure just calls Dispose(False).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;'/// &amp;lt;/summary&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;Protected Overrides Sub &lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;Finalize()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;'Simply call Dispose(False), because user has not already &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;'called Dispose () to perform object finalization process.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN" style="FONT-SIZE: 9pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-GB"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;Dispose(&lt;/span&gt;&lt;span style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;False&lt;/span&gt;&lt;span style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;End Sub&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;#&lt;/span&gt;&lt;span style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;End &lt;/span&gt;&lt;span style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Courier New'"&gt;Region&lt;/span&gt;&lt;/p&gt;</description></item><item><title>Re: =Nothing ή Dispose</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/3161.aspx</link><pubDate>Wed, 29 Jun 2005 00:04:59 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:3161</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/3161.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=3161</wfw:commentRss><description>&lt;p&gt;&lt;font style="BACKGROUND-COLOR: #efefef"&gt;Γενικά επιδέχεται ρυθμίσεις, (μπορείς να χρησιμοποιήσεις τη GC.Collect για να κάνεις force τον κύκλο του Garbage Collector αλλα ΔΕΝ προτείνεται - ειναι αρκετά αποδοτικός ως έχει αν τον αφήσεις να λειτουργήσει μόνος του).&lt;br /&gt;&lt;br /&gt;Σου παραθέτω το εξής πολύ χρήσιμο άρθρο για να δεις περισσότερα (ο συγκεκριμένος τα λεει πολύ καλύτερα και λεπτομερέστερα από ο,τι τα είπα εγω):&lt;br /&gt;&lt;a target="_blank" title="http://blogs.msdn.com/clyon/archive/2004/09/21/232445.aspx" href="http://blogs.msdn.com/clyon/archive/2004/09/21/232445.aspx"&gt;http://blogs.msdn.com/clyon/archive/2004/09/21/232445.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;</description></item><item><title>Re: =Nothing ή Dispose</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/3160.aspx</link><pubDate>Wed, 29 Jun 2005 00:00:40 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:3160</guid><dc:creator>axaros</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/3160.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=3160</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/forums/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;cap wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td width="100%" valign="top" class="txt4"&gt; &lt;p&gt;&lt;font style="BACKGROUND-COLOR: #efefef"&gt;Να το πώ αλλιώς εγώ;&lt;br /&gt;&lt;br /&gt;Αν το object σου δεν περιέχει references άλλα objects τότε το =nothing θα μηδενίσει το reference σε αυτό και θα το "μαζέψει" ο GC στον επόμενο κύκλο του.&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;br /&gt;&lt;br /&gt;Ευχαριστώ και εσένα Σωτήρη ...&lt;br /&gt;Ο Garbage Collector επιδέχεται ρυθμίσεις ;</description></item><item><title>Re: =Nothing ή Dispose</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/3158.aspx</link><pubDate>Tue, 28 Jun 2005 23:52:10 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:3158</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/3158.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=3158</wfw:commentRss><description>&lt;p&gt;&lt;font style="BACKGROUND-COLOR: #efefef"&gt;Να το πώ αλλιώς εγώ;&lt;br /&gt;&lt;br /&gt;Αν το object σου δεν περιέχει references άλλα objects τότε το =nothing θα μηδενίσει το reference σε αυτό και θα το "μαζέψει" ο GC στον επόμενο κύκλο του.&lt;br /&gt;&lt;br /&gt;Αν το object σου περιέχει references σε άλλα objects και ΙΔΙΑΙΤΕΡΑ αν κάποια από αυτά είναι unmanaged, τότε αυτά ζουν ωσπου το object σου να "μαζευτεί" από τον garbage collector (ειδικά για τα unmanaged, δεν είμαι σίγουρος οτι πεθαίνουν εκεί). Αρα, αν έχεις ένα "παχύ" object με πολλά άλλα objects π.χ. που περιέχονται σε ένα arraylist ή ένα hashtable ή ένα collection βρε αδελφέ και αυτά με τη σειρά τους ενδέχεται να περιέχουν άλλα objects κλπ, δημιουργείται μια "αλυσίδα" την οποία μπορεί να θέλεις να καταργήσεις και να εξαφανίσεις όσο το δυνατόν πιό γρήγορα αφού την χρησιμοποιήσεις και κάνεις τη δουλειά σου. &lt;br /&gt;&lt;br /&gt;Εκεί, dispose.&lt;br /&gt;&lt;br /&gt;Παραδειγμα: Serviced components. Δεν θέλουμε να τα έχουμε να γυρνάνε γύρω γυρω αφου τελειώσουμε την κλήση μας (αρα και τη δουλειά μας). Αρα τα κάνουμε dispose οσο το δυνατόν ταχύτερα. Αν είναι pooled, ξαναμπαίνουν στο pool και είναι διαθέσιμα για την επόμενη κλήση.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;</description></item><item><title>Re: =Nothing ή Dispose</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/3157.aspx</link><pubDate>Tue, 28 Jun 2005 23:49:44 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:3157</guid><dc:creator>axaros</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/3157.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=3157</wfw:commentRss><description>&lt;p&gt;&lt;font style="BACKGROUND-COLOR: #efefef"&gt;Όπως πάντα Σπαρτιάτης και to the point ...&lt;br /&gt;Σε πάω Δάσκαλε !!!!&lt;img src="/forums//emoticons/emotion-2.gif" alt="Big Smile" /&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font style="BACKGROUND-COLOR: #efefef"&gt;Ευχαριστώ γι' άλλη μια φορά ...&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/font&gt;</description></item></channel></rss>