Exemplo n.º 1
0
 public WeakReference(T target)
 {
     _managedWeakReference = new System.WeakReference <T>(target);
     if (target is object && ComWrappersSupport.TryUnwrapObject(target, out var objRef))
     {
         _nativeWeakReference = target.As <IWeakReferenceSource>().GetWeakReference();
     }
 }
Exemplo n.º 2
0
 private static object ResolveNativeWeakReference(IWeakReference reference)
 {
     if (reference is null)
     {
         return(null);
     }
     using var resolved = reference.Resolve(typeof(IUnknownVftbl).GUID);
     return(ComWrappersSupport.CreateRcwForComObject(resolved.ThisPtr));
 }
Exemplo n.º 3
0
 public void SetTarget(T target)
 {
     lock (_managedWeakReference)
     {
         _managedWeakReference.SetTarget(target);
         if (target is object && ComWrappersSupport.TryUnwrapObject(target, out _))
         {
             _nativeWeakReference = target.As <IWeakReferenceSource>().GetWeakReference();
         }
     }
 }