2012-07-28 142 views
0

我在我的metro风格的应用程序中做简单的图像缓存。这是我已经做了:如何比较图像(缓存图像)?

private async void GetImage() 
    { 
     bool isFolderExisting = true; 
     bool isFileExisting = true; 
     StorageFolder storageFolder = null; 
     StorageFile storageFile = null; 

     // get screenshots folder  
     try 
     { 
      storageFolder = await ApplicationData.Current.TemporaryFolder.GetFolderAsync("screenshots"); 
     } 
     catch (System.IO.FileNotFoundException ex) 
     { 
      isFolderExisting = false; 
     } 
     // if folder doesn't exist, create new one 
     if (isFolderExisting == false) 
      storageFolder = await ApplicationData.Current.TemporaryFolder.CreateFolderAsync("screenshots"); 

     // get screenshot 
     try 
     { 
      storageFile = await storageFolder.GetFileAsync(this.LinkId); 
      //IAsyncAction threadPoolWorkItem = ThreadPool.RunAsync((source) => { updateImage(storageFile); }); 
     } 
     catch (System.IO.FileNotFoundException ex) 
     { 
      isFileExisting = false; 
     } 

     // if file doesn't exists, download and save new one 
     if (isFileExisting == false) 
     { 
      var uri = new Uri(WebServiceAddress + "/screenshot/" + this.LinkId, UriKind.Absolute); 
      var thumbnail = Windows.Storage.Streams.RandomAccessStreamReference.CreateFromUri(uri); 
      storageFile = await StorageFile.CreateStreamedFileFromUriAsync(this.LinkId, uri, thumbnail); 
      await storageFile.CopyAsync(storageFolder, storageFile.Name, NameCollisionOption.ReplaceExisting); 
     } 

     //this.ImageSource = new Windows.UI.Xaml.Media.Imaging.BitmapImage(new Uri("ms-appdata:///temp/screenshots/" + this.LinkId)); 
     this.Image = "ms-appdata:///temp/screenshots/" + this.LinkId; 
    } 

现在我必须照顾的最后一部分是比较图像。 我正在检查图像是否存在临时文件夹中。如果它不存在,我只是下载新的,但如果存在,我需要检查它是否与服务器上相同。我怎样才能达到目的?

回答