<Type Name="WeakReference" FullName="System.WeakReference">
  <TypeSignature Maintainer="auto" Language="C#" Value="public class WeakReference : System.Runtime.Serialization.ISerializable" />
  <AssemblyInfo>
    <AssemblyName>mscorlib</AssemblyName>
    <AssemblyPublicKey>[00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00]</AssemblyPublicKey>
    <AssemblyVersion>2.0.0.0</AssemblyVersion>
  </AssemblyInfo>
  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the &lt;link location="node:gtk-sharp/programming/threads"&gt;Gtk# Thread Programming&lt;/link&gt; for details.</ThreadSafetyStatement>
  <Base>
    <BaseTypeName>System.Object</BaseTypeName>
  </Base>
  <Interfaces>
    <Interface>
      <InterfaceName>System.Runtime.Serialization.ISerializable</InterfaceName>
    </Interface>
  </Interfaces>
  <Docs>
    <summary>A weak reference holds a reference to another object but does not prevent the object from being garbage collected.</summary>
    <remarks>
      <para>Garbage collection is the automatic, background process where unused objects are deallocated from memory.  Normally, objects that can still be accessed by the program will not be garbage collected.  The WeakReference object provides an exception.  The reference from a WeakReference object to another object, the target, is not considered when determining whether that object is ready for garbage collection.</para>
      <para>That is, an object is elligible for garbage collection when there are no "strong" references to the object.</para>
      <para>When the target of a WeakReference is garbage collected, the Target property of the WeakReference is reset to <see langword="null" /> and the target is no longer accessible to the program.</para>
      <para>If the WeakReference is tracking an object's ressurection, the object will still be accessible from the Target property after the object's Finalize method has been called but before the object is cleared from memory.</para>
    </remarks>
  </Docs>
  <Members>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="public WeakReference (object target);" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters>
        <Parameter Name="target" Type="System.Object" />
      </Parameters>
      <Docs>
        <param name="target">The target object object.</param>
        <summary>Creates a new WeakReference referencing an object.</summary>
        <remarks>None.</remarks>
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="public WeakReference (object target, bool trackResurrection);" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters>
        <Parameter Name="target" Type="System.Object" />
        <Parameter Name="trackResurrection" Type="System.Boolean" />
      </Parameters>
      <Docs>
        <param name="target">The target object.</param>
        <param name="trackResurrection">Whether to retain the reference to the object after the object's finalizer has been called but before the object has been removed from memory.</param>
        <summary>Creates a new WeakReference referencing an object, and optionally tracking the ressurection of the object.</summary>
        <remarks>Accessing an object post-finalization should be done with care.</remarks>
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="protected WeakReference (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters>
        <Parameter Name="info" Type="System.Runtime.Serialization.SerializationInfo" />
        <Parameter Name="context" Type="System.Runtime.Serialization.StreamingContext" />
      </Parameters>
      <Docs>
        <param name="info">No information available.</param>
        <param name="context">No information available.</param>
        <summary>This constructor is for serialization.</summary>
        <remarks>None.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Finalize">
      <MemberSignature Language="C#" Value="~WeakReference ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName="GetObjectData">
      <MemberSignature Language="C#" Value="public virtual void GetObjectData (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="info" Type="System.Runtime.Serialization.SerializationInfo" />
        <Parameter Name="context" Type="System.Runtime.Serialization.StreamingContext" />
      </Parameters>
      <Docs>
        <param name="info">No information available.</param>
        <param name="context">No information available.</param>
        <summary>This method is used for serialization.</summary>
        <remarks>None.</remarks>
      </Docs>
    </Member>
    <Member MemberName="IsAlive">
      <MemberSignature Language="C#" Value="public virtual bool IsAlive { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>Gets whether the target has been garbage collected.</summary>
        <value>True if the target has been garbage collected.</value>
        <remarks>None.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Target">
      <MemberSignature Language="C#" Value="public virtual object Target { set; get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Object</ReturnType>
      </ReturnValue>
      <Parameters>
      </Parameters>
      <Docs>
        <summary>Gets or sets the target object.</summary>
        <value>The target object.</value>
        <remarks>The target is potentially elligible for garbage collection although it may be reachable through this property.</remarks>
      </Docs>
    </Member>
    <Member MemberName="TrackResurrection">
      <MemberSignature Language="C#" Value="public virtual bool TrackResurrection { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>Gets whether this WeakReference is tracking the object's resurrection.</summary>
        <value>True if the WeakReference is tracking the target object's ressurection.</value>
        <remarks>None.</remarks>
      </Docs>
    </Member>
  </Members>
</Type>
