예제 #1
0
 internal static void IncreaseReferenceCount(int dotnetObjectId)
 {
     lock (DotNetObject.Locker)
     {
         if (DotNetObject.DotnetObjectReferences.ContainsKey(dotnetObjectId))
         {
             DotNetObjectReferenceCounter dotnetObjectReference = DotNetObject.DotnetObjectReferences[dotnetObjectId];
             ++dotnetObjectReference.ReferenceCount;
             DotNetObject.DotnetObjectReferences[dotnetObjectId] = dotnetObjectReference;
         }
         else
         {
             DotNetObject fromFirstReferences = DotNetObject.GetDotNetObjectFromFirstReferences(dotnetObjectId);
             DotNetObject.DotnetObjectReferences.Add(dotnetObjectId, new DotNetObjectReferenceCounter()
             {
                 ReferenceCount = 1,
                 DotNetObject   = fromFirstReferences
             });
         }
     }
 }
예제 #2
0
 internal static DotNetObject GetManagedObjectWithId(int dotnetObjectId)
 {
     lock (DotNetObject.Locker)
     {
         DotNetObjectReferenceCounter referenceCounter;
         return(DotNetObject.DotnetObjectReferences.TryGetValue(dotnetObjectId, out referenceCounter) ? referenceCounter.DotNetObject : DotNetObject.GetDotNetObjectFromFirstReferences(dotnetObjectId));
     }
 }