static RXWeak() { _listeners = new List <RXWeakListener>(); //this will trigger CleanUp to be called every time the Garbage Collector is run RXGCTrigger.AddCallback(CleanUp); }
public static void RemoveCallback(Action SignalGC) { for (int w = 0; w < weakRefs.Count; w++) { RXGCTrigger trigger = (weakRefs[w].Target as RXGCTrigger); if (trigger != null && trigger.SignalGC == SignalGC) { trigger.shouldStop = true; weakRefs.RemoveAt(w); w--; } } }
public static void AddCallback(Action SignalGC) { for (int w = 0; w < weakRefs.Count; w++) { RXGCTrigger trigger = (weakRefs[w].Target as RXGCTrigger); if (trigger != null && trigger.SignalGC == SignalGC) { return; //we already have it so don't add it again! } } new RXGCTrigger(SignalGC); }