public void SetTarget(T target) { lock (_managedWeakReference) { _managedWeakReference.SetTarget(target); if (target is object && ComWrappersSupport.TryUnwrapObject(target, out _)) { _nativeWeakReference = target.As <IWeakReferenceSource>().GetWeakReference(); } } }
public void SetTarget(T target) { lock (_managedWeakReference) { _managedWeakReference.SetTarget(target); } }
public static T FindOrCreate <T>(this System.WeakReference <T> wr, Func <T> factory) where T : class { T value; if (!wr.TryGetTarget(out value)) { value = factory(); wr.SetTarget(value); } return(value); }