private void ReceiveImage(ImageResource resource) { Resource = resource; #if ANDROID UpdateImgView(); #endif if (ReceivedImage != null) { ReceivedImage(this); } Element el = this.Parent; while (el != null) { if (el is NPage) { NPage page = (NPage)el; page.PositionElements(); } el = el.Parent; } }
private void update() { lock (locker) { try { startQueued(); for (int i = 0; i < downloading.Count; i++) { var down = downloading[i]; switch (down.dtype) { case LoadType.File: { Task task = down.Task; IResourceObject res = null; if (task.Status == TaskStatus.RanToCompletion) { switch (down.type) { case ResourceType.Image: #if ANDROID Task <Bitmap> t = (Task <Bitmap>)task; res = new ImageResource(t.Result); #elif IOS Task <UIImage> t = (Task <UIImage>)task; res = new ImageResource(t.Result); #else throw new NotImplementedException(); #endif if (down.store) { resources.Add(down.path.OriginalString, res); } downloading.RemoveAt(i); i--; for (int j = 0; j < down.Callbacks.Count; j++) { Delegate del = (Delegate)down.Callbacks[j]; del.DynamicInvoke(res); //down.Callbacks[j](res); } break; } } } break; case LoadType.Download: { down.client.Dispose(); var task = (Task <byte[]>)down.Task; if (task.Status == TaskStatus.RanToCompletion) { // success IResourceObject res = null; switch (down.type) { case ResourceType.Image: res = new ImageResource(task.Result); if (task.Result.Length < 10) { // decode error string error = WebUtil.GetASCIIString(task.Result); continue; } break; case ResourceType.String: res = new StringResource(task.Result); break; } if (down.store) { resources.Add(down.path.OriginalString, res); } downloading.RemoveAt(i); i--; for (int j = 0; j < down.Callbacks.Count; j++) { Delegate del = (Delegate)down.Callbacks[j]; del.DynamicInvoke(res); //down.Callbacks[j](res); } } else if (task.Status == TaskStatus.Canceled || task.Status == TaskStatus.Faulted) { // failure downloading.RemoveAt(i); i--; for (int j = 0; j < down.failureCallbacks.Count; j++) { down.failureCallbacks[j](); } } } break; } } } catch (Exception ex) { Debug.WriteLine(ex.ToString()); if (ex is WebException) { WebException web = (WebException)ex; using (Stream stream = web.Response.GetResponseStream()) { StreamReader reader = new StreamReader(stream); string data = reader.ReadToEnd(); } } } } }