2013-01-20 86 views
0
保存的圖像

我發現從鏈接類ImageCaching 但是當我從孤立的存儲,我得到一個exeption「System.InvalidOperationException」System.InvalidOperationException發生時負荷IsolatedStorage

加載這裏是我的代碼

public static object DownloadFromWeb(Uri imageFileUri) 
    { 
     WebClient m_webClient = new WebClient();        //Load from internet 
     BitmapImage bm = new BitmapImage(); 

     m_webClient.OpenReadCompleted += (o, e) => 
     { 
      if (e.Error != null || e.Cancelled) return; 
      WriteToIsolatedStorage(IsolatedStorageFile.GetUserStoreForApplication(), e.Result, GetFileNameInIsolatedStorage(imageFileUri)); 
      bm.SetSource(e.Result); 
      e.Result.Close(); 
     }; 
     m_webClient.OpenReadAsync(imageFileUri); 
     return bm; 
    } 

    public static object ExtractFromLocalStorage(Uri imageFileUri) 
    { 
     byte[] data; 
     string isolatedStoragePath = GetFileNameInIsolatedStorage(imageFileUri);  //Load from local storage 
     if (null == _storage) 
     { 
      _storage = IsolatedStorageFile.GetUserStoreForApplication(); 
     } 
     using (IsolatedStorageFileStream sourceFile = _storage.OpenFile(isolatedStoragePath, FileMode.Open, FileAccess.Read)) 
     { 


      // Read the entire file and then close it 
      sourceFile.Read(data, 0, data.Length); 
      sourceFile.Close(); 
      BitmapImage bm = new BitmapImage(); 
      bm.SetSource(sourceFile);///here got the exeption 
      return bm; 

     } 

    } 

因此我無法設置圖像。

+0

兩件事情 - 什麼是異常消息?你也不應該忽略'sourceFile.Read'的返回值。 –

+0

我已經更改了代碼。異常消息是「此操作在相對URI上不受支持」 – Sujiz

回答

0

我正在使用您提到的轉換器,它的工作原理,但您修改了該方法。

你的ExtractFromLocalStorage方法是不一樣的。您先關閉流,然後使用SetSource方法。

原來這裏是方法的代碼:

private static object ExtractFromLocalStorage(Uri imageFileUri) 
    { 
     string isolatedStoragePath = GetFileNameInIsolatedStorage(imageFileUri);  //Load from local storage 
     using (var sourceFile = _storage.OpenFile(isolatedStoragePath, FileMode.Open, FileAccess.Read)) 
     { 
      BitmapImage bm = new BitmapImage(); 
      bm.SetSource(sourceFile); 
      return bm; 
     } 
    }