// Force a garbage collection and wait for
// each object to be finalized.
GC.Collect();
GC.WaitForPendingFinalizers();
...
}
When you manually force a garbage collection, you should always make a call to GC.
WaitForPendingFinalizers(). With this approach, you can rest assured that all finalizable objects
have had a chance to perform any necessary cleanup before your program continues forward.
Under the hood, GC.WaitForPendingFinalizers() will suspend the calling “thread” during the col-
lection process. This is a good thing, as it ensures your code does not invoke methods on an object
currently being destroyed!
The GC.Collect() method can also be supplied a numerical value that identifies the oldest
generation on which a garbage collection will be performed. For example, if you wished to instruct
the CLR to only investigate generation 0 objects, you would write the following:
C H A P T E R 8
■
U N D E R S TA N D I N G O B J E C T L I F E T I M E
253
8849CH08.qxd 10/22/07 1:27 PM Page 253
static void Main(string[] args)
{
...
Do'stlaringiz bilan baham: |