private void ProcessResource(ContentPreload resource)
        {
            try
            {
                var id   = resource.ID;
                var item = resource.Item;

                switch (resource.Type)
                {
                case ContentPreloadType.UITexture:
                    /** Apply alpha channel masking & load into GD **/
                    UIElement.StoreTexture(id, item, true, true);
                    break;

                case ContentPreloadType.UITexture_NoMask:
                    UIElement.StoreTexture(id, item, false, false);
                    break;

                case ContentPreloadType.Other:
                    ContentManager.TryToStoreResource(id, item);
                    break;
                }
            }
            catch
            {
            }
        }
        private static void ProcessResource(ContentPreload resource, ContentResource item)
        {
            var id = resource.ID;

            try
            {
                switch (resource.Type)
                {
                case ContentPreloadType.UITexture:
                    /** Apply alpha channel masking & load into GD **/
                    UIElement.StoreTexture(id, item, true, true);
                    break;

                case ContentPreloadType.UITexture_NoMask:
                    UIElement.StoreTexture(id, item, false, true);
                    break;

                case ContentPreloadType.Other:
                    ContentManager.TryToStoreResource(id, item);
                    break;
                }
            }
            catch (Exception e)
            {
                System.Diagnostics.Debug.WriteLine("Failed to load file: " + id + ", " + e.Message);
            }
        }
        public void Run()
        {
            while (true)
            {
                ContentPreload workItem = null;

                lock (Work)
                {
                    if (Work.Count == 0)
                    {
                        break;
                    }
                    else
                    {
                        workItem = Work[0];
                        Work.RemoveAt(0);
                    }
                }


                if (workItem != null)
                {
                    Preload(workItem);
                }
            }


            /** All done **/
            ActiveWorkers.Remove(this);
        }
        private void Preload(ContentPreload workItem)
        {
            var id = workItem.ID;

            try
            {
                var item = ContentManager.GetResourceInfo(id);

                switch (workItem.Type)
                {
                    case ContentPreloadType.UITexture:
                        /** Apply alpha channel masking & load into GD **/
                        UIElement.StoreTexture(id, item);
                        break;

                    case ContentPreloadType.UITexture_NoMask:
                        UIElement.StoreTexture(id, item, false, true);
                        break;

                    case ContentPreloadType.Other:
                        ContentManager.TryToStoreResource(id, item);
                        break;
                }
            }
            catch (Exception e)
            {
                System.Diagnostics.Debug.WriteLine("Failed to load file: " + id + ", " + e.Message);
            }
        }
        public void Process(ContentPreload resource, ContentResource item)
        {
            m_Lock.WaitOne();

            lock (m_Work)
            {
                resource.Item = item;
                m_Work.Add(resource);
            }
        }
 private void DoProcess()
 {
     while (!m_Done)
     {
         ContentPreload nextWork = null;
         lock (m_Work)
         {
             if (m_Work.Count > 0)
             {
                 nextWork = m_Work[0];
                 m_Work.RemoveAt(0);
             }
         }
         if (nextWork != null)
         {
             ProcessResource(nextWork);
             m_Lock.Release();
         }
     }
 }
        private void ProcessResource(ContentPreload resource)
        {
            try
            {
                var id = resource.ID;
                var item = resource.Item;

                switch (resource.Type)
                {
                    case ContentPreloadType.UITexture:
                        /** Apply alpha channel masking & load into GD **/
                        UIElement.StoreTexture(id, item, true, true);
                        break;

                    case ContentPreloadType.UITexture_NoMask:
                        UIElement.StoreTexture(id, item, false, false);
                        break;

                    case ContentPreloadType.Other:
                        ContentManager.TryToStoreResource(id, item);
                        break;
                }
            }
            catch
            {
            }
        }
        public void Process(ContentPreload resource, ContentResource item)
        {
            m_Lock.WaitOne();

            lock (m_Work)
            {
                resource.Item = item;
                m_Work.Add(resource);
            }
        }