Example
First, as we begin, let's notice that the WeakReference type is created using a constructor call. You must pass the object reference you want to point to to the constructor; here we use a StringBuilder object. In the middle of the program, the garbage collector is run using GC.Collect; after this call, the object pointed to by the WeakReference no longer exists. If you don't call GC.Collect, the object will almost certainly still exist.Program that uses WeakReference [C#] using System; using System.Text; class Program { /// <summary> /// Points to data that can be garbage collected any time. /// </summary> static WeakReference _weak; static void Main() { // Assign the WeakReference. _weak = new WeakReference(new StringBuilder("perls")); // See if weak reference is alive. if (_weak.IsAlive) { Console.WriteLine((_weak.Target as StringBuilder).ToString()); } // Invoke GC.Collect. // ... If this is commented out, the next condition will evaluate true. GC.Collect(); // Check alive. if (_weak.IsAlive) { Console.WriteLine("IsAlive"); } // Finish. Console.WriteLine("[Done]"); Console.Read(); } } Output perls [Done]IsAlive. One important property on the WeakReference type is the IsAlive property. This is a boolean property that indicates whether the object pointed to by the WeakReference has been collected or not.
Target. The Target property returns an object that contains the reference to the instance you stored in the WeakReference. You should cast the object using the as operator or the explicit cast before using the instance.
No comments:
Post a Comment