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 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();
         }
     }
 }