示例#1
0
        private BitmapImage LoadImage(string key, string filePath)
        {
            BitmapImage bitmapImage = null;

            if (Fetching.Contains(key))
            {
                return(new BitmapImage());
            }
            try
            {
                Application.Current.Dispatcher.Invoke(() =>
                {
                    bitmapImage = new BitmapImage();
                    using (var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read))
                    {
                        bitmapImage.BeginInit();
                        bitmapImage.CacheOption  = BitmapCacheOption.OnLoad;
                        bitmapImage.StreamSource = stream;
                        bitmapImage.EndInit();
                        bitmapImage.Freeze();
                    }
                });
            }
            catch (FileFormatException e)
            {
                Log.Error(e);
                try
                {
                    File.Delete(filePath);
                    //TODO: Implement retry
                }
                catch (Exception)
                {
                }
            }
            catch (IOException e)
            {
                Log.Error(e);
            }
            return(bitmapImage);
        }
示例#2
0
 private static async Task <XDocument> LoadFromUrlAsync(Uri url)
 {
     using (var httpClient = new HttpClient())
     {
         httpClient.DefaultRequestHeaders.Add(
             "User-Agent",
             "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.3; WOW64; Trident/7.0; Touch; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; Tablet PC 2.0)");
         Fetching?.Invoke(null, new FetchingEventArgs(url));
         try
         {
             using (var hs = await httpClient.GetStreamAsync(url))
             {
                 var document = SgmlReader.Parse(hs);
                 Fetched?.Invoke(null, new FetchedEventArgs(url, document, null));
                 return(document);
             }
         }
         catch (Exception ex)
         {
             Fetched?.Invoke(null, new FetchedEventArgs(url, null, ex));
             throw;
         }
     }
 }