public static void UnregisterForCleanup(ref CleanupNotifier.RegistrationToken token) { object obj = CleanupNotifier.cleanupIdToContext; lock (obj) { CleanupNotifier.ObjectCleanupContext objectCleanupContext; if (CleanupNotifier.cleanupIdToContext.TryGetValue(token.Identifier, out objectCleanupContext)) { CleanupNotifierBridge.UnregisterCleanupDelegate(objectCleanupContext.CleanupObjectCPtr, objectCleanupContext.NotifyObjectCPtr); CleanupNotifier.DeleteContext(ref token); FirebaseApp.LogMessage(LogLevel.Debug, string.Format("{0} (instance 0x{1:X}) unregistered for cleanup when 0x{2:X} is destroyed", objectCleanupContext.NotifyObjectType, (long)objectCleanupContext.NotifyObjectCPtr, (long)objectCleanupContext.CleanupObjectCPtr)); } } }
public static void DisposeObject(ref CleanupNotifier.RegistrationToken token, object owner, bool delete) { object obj = CleanupNotifier.cleanupIdToContext; lock (obj) { CleanupNotifier.ObjectCleanupContext objectCleanupContext; if (CleanupNotifier.cleanupIdToContext.TryGetValue(token.Identifier, out objectCleanupContext)) { CleanupNotifier.DeleteContext(ref token); if (!CleanupNotifierBridge.GetAndDestroyNotifiedFlag(objectCleanupContext.NotifyObjectCPtr) && delete) { FirebaseApp.LogMessage(LogLevel.Debug, string.Format("{0} (instance 0x{1:X}) being deleted", objectCleanupContext.NotifyObjectType, (long)objectCleanupContext.NotifyObjectCPtr)); objectCleanupContext.DeleteObject(new HandleRef(owner, objectCleanupContext.NotifyObjectCPtr)); FirebaseApp.LogMessage(LogLevel.Debug, string.Format("{0} (instance 0x{1:X}) deleted", objectCleanupContext.NotifyObjectType, (long)objectCleanupContext.NotifyObjectCPtr)); } } } }