Exemplo n.º 1
0
        public static async Task <TaskRequest> GetTexture(string url, ITextureResultListener listener)
        {
            var filePath = path + "/" + url.GetHashCode();

            if (pendingRequests.ContainsKey(filePath)) //Return pending task if any in progress
            {
                var rq = pendingRequests[filePath];
                rq.AddListener(listener);
                await rq.Task;
                return(rq);
            }

            var request = new TaskRequest(GetTextureTask(url, filePath), listener);

            if (pendingRequests.ContainsKey(filePath))
            {
                return(null);
            }
            pendingRequests.Add(filePath, request);
            await request.Task;

            pendingRequests.Remove(filePath);
            return(request);
        }
Exemplo n.º 2
0
 public void AddListener(ITextureResultListener listener)
 {
     Listeners.Add(listener.Id);
 }
Exemplo n.º 3
0
 public void RemoveListener(ITextureResultListener textureDownloader)
 {
     Listeners.Remove(textureDownloader.Id);
 }
Exemplo n.º 4
0
 public TaskRequest(Task <GetTextureResult> task, ITextureResultListener listener)
 {
     Task = task;
     AddListener(listener);
 }