Ejemplo n.º 1
0
        /// <summary>
        /// Adds a handler that is called every time this resource is loaded. If the resource
        /// is loaded at the time this handler is added, the handler is called immediately
        /// To prevent deadlock, these handlers should not trigger a load/unload of the resource
        /// </summary>
        /// <param name="handler"></param>
        public void AddResourceEventListener(IResourceEventListener listener)
        {
            // Prevent modification of loading status while doing this check
            bool listenLoad   = false;
            bool listenUnload = false;

            lock (HandlerLock)
            {
                if (IsLoaded)
                {
                    listenLoad = true;
                }
                if (!IsLoaded)
                {
                    listenUnload = true;
                }
                EventListeners.Add(new WeakReference <IResourceEventListener>(listener));
            }
            if (listenLoad)
            {
                listener.OnResourceLoaded(this);
            }
            if (listenUnload)
            {
                listener.OnResourceUnloaded(this);
            }
        }
Ejemplo n.º 2
0
 public void RegisterListener(IResourceEventListener listener)
 {
     if (listeners == null)
     {
         listeners = new List <IResourceEventListener>();
     }
     listeners.Add(listener);
 }
Ejemplo n.º 3
0
 public void UnregisterListener(IResourceEventListener listener)
 {
     listeners.Remove(listener);
 }