Пример #1
0
        static void Download(GetImageRequest request)
        {
            var buffer = new byte [4*1024];

            try
            {
                Action<UpdateImage> callback;
                if(_requests.TryGetValue(request, out callback))
                {
                    string filetype = request.Uri.Segments.Last().Split('.').Last();
                    string target = _cacheDir + request.Id + "." + filetype;

                    if(!File.Exists(target))
                    {
                        UIApplication.SharedApplication.NetworkActivityIndicatorVisible = true;
                        using (var file = new FileStream (target, FileMode.Create, FileAccess.Write, FileShare.Read))
                        {
                            var req = WebRequest.Create (request.Uri) as HttpWebRequest;

                            using (var resp = req.GetResponse())
                            using (var s = resp.GetResponseStream())
                            {
                                int n;
                                while ((n = s.Read (buffer, 0, buffer.Length)) > 0)
                                {
                                    file.Write (buffer, 0, n);
                                }
                            }
                        }
                        UIApplication.SharedApplication.NetworkActivityIndicatorVisible = false;
                    }

                    callback(new UpdateImage(request.Number, request.Uri, UIImage.FromFileUncached(target)));
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine ("Problem with {0} {1}", request.Uri, ex);
            }
        }
Пример #2
0
 public static void GetImage(GetImageRequest request, Action<UpdateImage> callback)
 {
     _requests.Add(request, callback);
     _queue.Queue(request);
 }