コード例 #1
0
        public void LoadLocal(LocalIconTask task)
        {
            string     path            = task.Path;
            CacheImage cacheImageByKey = this.GetCacheImageByKey(path);

            if (cacheImageByKey != null)
            {
                cacheImageByKey.AddRef(1);
                task.Result(true, cacheImageByKey.Tex);
            }
            else
            {
                LocalCImageTask localCacheTaskByKey = this.GetLocalCacheTaskByKey(path);
                if (localCacheTaskByKey != null)
                {
                    localCacheTaskByKey.JoinHandler(task);
                }
                else
                {
                    LocalCImageTask cacheTask = new LocalCImageTask(task, path);
                    this.localTasks.Add(cacheTask);
                    cacheTask.Complete += delegate(CacheImage image)
                    {
                        if (image != null)
                        {
                            this.cached.Add(image);
                        }
                        this.localTasks.Remove(cacheTask);
                    };
                    cacheTask.Run(this.localRunner);
                }
            }
        }
コード例 #2
0
        public void LoadWeb(IconDownloadTask task)
        {
            string     cacheKey        = task.CacheKey;
            CacheImage cacheImageByKey = this.GetCacheImageByKey(cacheKey);

            if (cacheImageByKey != null)
            {
                cacheImageByKey.AddRef(1);
                task.Result(true, cacheImageByKey.Tex);
            }
            else
            {
                WebCImageTask webCacheTaskByKey = this.GetWebCacheTaskByKey(cacheKey);
                if (webCacheTaskByKey != null)
                {
                    webCacheTaskByKey.JoinHandler(task);
                }
                else
                {
                    WebCImageTask cacheTask = new WebCImageTask(task, cacheKey);
                    this.webTasks.Add(cacheTask);
                    cacheTask.Complete += delegate(CacheImage image)
                    {
                        if (image != null)
                        {
                            this.cached.Add(image);
                        }
                        this.webTasks.Remove(cacheTask);
                    };
                    cacheTask.Run(this.localRunner);
                }
            }
        }
コード例 #3
0
        private void ReportResults()
        {
            bool      success = base.Tex != null;
            Texture2D tex     = base.Tex;
            int       num     = 0;

            if (!this.initial.IsCanceled)
            {
                num++;
                this.initial.Result(success, tex);
            }
            if (this.joined != null)
            {
                for (int i = 0; i < this.joined.Count; i++)
                {
                    if (!this.joined[i].IsCanceled)
                    {
                        num++;
                        this.joined[i].Result(success, tex);
                    }
                }
            }
            CacheImage cacheImage = null;

            if (base.Tex != null)
            {
                cacheImage     = new CacheImage(this.initial.Path);
                cacheImage.Tex = base.Tex;
                cacheImage.AddRef(num);
            }
            base.FireCompleted(cacheImage);
        }