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 }); } } }
internal static DotNetObject GetManagedObjectWithId(int dotnetObjectId) { lock (DotNetObject.Locker) { DotNetObjectReferenceCounter referenceCounter; return(DotNetObject.DotnetObjectReferences.TryGetValue(dotnetObjectId, out referenceCounter) ? referenceCounter.DotNetObject : DotNetObject.GetDotNetObjectFromFirstReferences(dotnetObjectId)); } }