当我重新启动APP时,为什么IsolatingStorageSettings为空? (WP8)

时间:2014-03-04 16:04:34

标签: memory windows-phone-8 settings isolatedstorage

我使用IsolatingStorageSetting来存储一组对象。它在我的应用程序运行时运行良好,但是当我重新启动它时...集合为空...为什么它不将我的对象集合保留在内存中。?

 private  void llsElements_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {

            LongListSelector llselement = null;
            listElementCollection.Clear();

            if (sender != null)
                llselement =(LongListSelector)sender;

            if(llselement.SelectedItem!=null)
            {
               BdeskElement bdelement=(BdeskElement)llselement.SelectedItem;

               if (bdelement.TypeElement == BdeskElement.BdeskTypeElement.File)
               {

                   if (!IsolatedStorageSettings.ApplicationSettings.Contains(bdelement.URLElement))//IsCached? =>NON
                   {

                       if (IsolatedStorageSettings.ApplicationSettings.Count >= 100)//Si la liste des fichiers en cache est pleine
                       {
                           string KeyOldestElement = IsolatedStorageSettings.ApplicationSettings.Last().Key;
                           IsolatedStorageSettings.ApplicationSettings.Remove(KeyOldestElement);//on supprime le dernier élément de la liste
                           if (IsolatedStorageOperations.IsFileSaved(KeyOldestElement+bdelement.Extension))
                           IsolatedStorageOperations.DeleteFile(KeyOldestElement+bdelement.Extension);

                       }

                       IsolatedStorageSettings.ApplicationSettings.Add(bdelement.URLElement, bdelement);//on ajoute notre élément

                        DownloadAndReadFile(bdelement);

                   }

                   else  //Si le fichier est deja présent dans la liste (donc déja en cache)
                   {
                       if (IsFileModified(bdelement, IsolatedStorageSettings.ApplicationSettings[bdelement.URLElement]))//compare la version téléchargée et la version en cache/ les versions sont identiques
                       {
                           string FileNameFormated = bdelement.URLElement.Replace("/", "_").Substring(7, bdelement.URLElement.Length - 7);
                           if (IsolatedStorageOperations.IsFileSaved(FileNameFormated))
                           {
                               MessageBox.Show("Le fichier est lu dans le cache");
                               byte[] Encryptedbytefile = IsolatedStorageOperations.GetFile((FileNameFormated));
                               byte [] UnCryptedByteFile=EncryptedString.DecryptDataToData(Encryptedbytefile);
                               IsolatedStorageOperations.SaveToFile(UnCryptedByteFile, "FileToRead" + bdelement.Extension);
                               IsolatedStorageOperations.ReadFile("FileToRead"+bdelement.Extension);

                           }

                       }

                       else//les versions sont différentes
                       {
                           IsolatedStorageSettings.ApplicationSettings.Remove(bdelement.URLElement);//supprime l'ancienne version
                           IsolatedStorageSettings.ApplicationSettings.Add(bdelement.URLElement, bdelement);//ajoute la nouvelle

                           DownloadAndReadFile(bdelement);
                       }


                   }
               }
               else if (bdelement.TypeElement == BdeskElement.BdeskTypeElement.Folder)
               {

                   //l'élément cliqué devient l'élément courant
                   App.CurrentFolder = bdelement;
                   //On raffiche la page
                   NavigationService.Navigate(new Uri(String.Format("/Views/BDocs/FolderView.xaml?id={0}", Guid.NewGuid().ToString()), UriKind.Relative));

               }
            }
 IsolatedStorageSettings.ApplicationSettings.Save(); //EDITED
            }

修改

问题我有保存方法

信息supplémentaires:类型'System.Windows.Media.ImageSource'无法序列化。请考虑使用DataContractAttribute属性对其进行标记,并使用DataMemberAttribute属性标记要序列化的所有成员。或者,您可以确保该类型是公共的并且具有无参数构造函数 - 然后将序列化该类型的所有公共成员,并且不需要任何属性。

1 个答案:

答案 0 :(得分:0)

可能是因为你没有保存它 - 当你用它完成时尝试使用IsolatedStorageSettings.ApplicationSettings.Save()

当然,当你重新启动模拟器时它将不起作用 - 重新启动后它是一个新的实例。

编辑 - 在OP编辑后

您无法序列化ImageSource - 类似的问题是here。而是考虑序列化ImagePath。