2013-09-08 2 views
0

Я использую эти методы для сериализации и десериализации ObservableCollections в моем приложении.Извлечь данные из задачи в приложении для магазина Windows

 public static async void SaveToXmlAsync(string fileName, T classInstanceToSave) 
    { 
     using (var stream = await ApplicationData.Current.LocalFolder.OpenStreamForWriteAsync(fileName, CreationCollisionOption.ReplaceExisting)) 
     { 
      XmlSerializer serializer = new XmlSerializer(typeof(T)); 
      using (XmlWriter xmlWriter = XmlWriter.Create(stream, new XmlWriterSettings() { Indent = true })) 
      { 
       serializer.Serialize(xmlWriter, classInstanceToSave); 
      } 
     } 
    } 

    public static async System.Threading.Tasks.Task<T> LoadFromXmlAsync(string fileName) 
    { 
     try 
     { 
      var files = ApplicationData.Current.LocalFolder.GetFilesAsync(Windows.Storage.Search.CommonFileQuery.OrderByName).GetResults(); 
      var file = files.FirstOrDefault(f => f.Name == fileName); 

      // If the file exists, try and load it it's data. 
      if (file != null) 
      { 
       using (var stream = await ApplicationData.Current.LocalFolder.OpenStreamForReadAsync(fileName)) 
       { 
        XmlSerializer serializer = new XmlSerializer(typeof(T)); 
        T data = (T)serializer.Deserialize(stream); 
        return data; 
       } 
      } 
     } 
     // Eat any exceptions unless debugging so that users don't see any errors. 
     catch 
     { 
      if (IsDebugging) 
       throw; 
     } 

     // We couldn't load the data, so just return a default instance of the class. 
     return default(T); 
    } 
} 

Я нашел это методы в этой теме: click me

И я не знаю, как читать сохраненные данные. Как я могу передать задачу, возвращенную из метода десериализатора, в мою коллекцию? Я попытался это, но он не может скомпилировать:

ObservableCollection<Product> collection = Toolkit<ObservableCollection<Product>>.LoadFromXmlAsync("list1.xml"); 

ответ

0
ObservableCollection<Product> collection = await Toolkit<ObservableCollection<Product>>.LoadFromXmlAsync("list1.xml"); 

положил Также асинхронной ключевое слово для вашего собственного метода.

Удача