Ejemplo n.º 1
0
        // 从文件读取数据
        public async Task <IEnumerable <MenuCard> > ReadMenuCardsAsync()
        {
            var                    menuCards    = new List <MenuCard>();
            StorageFolder          folder       = ApplicationData.Current.RoamingFolder;
            StorageFileQueryResult result       = folder.CreateFileQuery();
            var                    queryOptions = new QueryOptions();

            queryOptions.IndexerOption = IndexerOption.DoNotUseIndexer;
            queryOptions.FolderDepth   = FolderDepth.Shallow;
            queryOptions.FileTypeFilter.Add(".xml");
            result.ApplyNewQueryOptions(queryOptions);
            IReadOnlyList <StorageFile> files = await result.GetFilesAsync();

            foreach (var file in files)
            {
                using (Stream stream = await file.OpenStreamForReadAsync())
                {
                    try
                    {
                        var    serializer = new DataContractSerializer(typeof(MenuCardData));
                        object data       = await Task <object> .Run(() => serializer.ReadObject(stream));

                        MenuCard menuCard = (data as MenuCardData).ToMenuCard();
                        menuCard.RestoreReferences();
                        menuCards.Add(menuCard);
                    }
                    catch (Exception)
                    {
                        // log exception
                    }
                }

                // read images
                var imageStorage = new MenuCardImageStorage();
                foreach (var menuCard in menuCards)
                {
                    if (menuCard.ImagePath != null)
                    {
                        menuCard.Image = await imageStorage.ReadImageAsync(menuCard.ImagePath);
                    }
                }
            }
            return(menuCards);
        }
Ejemplo n.º 2
0
        // 从文件读取数据
        public async Task<IEnumerable<MenuCard>> ReadMenuCardsAsync()
        {
            var menuCards = new List<MenuCard>();
            StorageFolder folder = ApplicationData.Current.RoamingFolder;
            StorageFileQueryResult result = folder.CreateFileQuery();
            var queryOptions = new QueryOptions();
            queryOptions.IndexerOption = IndexerOption.DoNotUseIndexer;
            queryOptions.FolderDepth = FolderDepth.Shallow;
            queryOptions.FileTypeFilter.Add(".xml");
            result.ApplyNewQueryOptions(queryOptions);
            IReadOnlyList<StorageFile> files = await result.GetFilesAsync();
            foreach (var file in files)
            {
                using (Stream stream = await file.OpenStreamForReadAsync())
                {
                    try
                    {
                        var serializer = new DataContractSerializer(typeof(MenuCardData));
                        object data = await Task<object>.Run(() => serializer.ReadObject(stream));

                        MenuCard menuCard = (data as MenuCardData).ToMenuCard();
                        menuCard.RestoreReferences();
                        menuCards.Add(menuCard);
                    }
                    catch (Exception)
                    {
                        // log exception
                    }
                }

                // read images
                var imageStorage = new MenuCardImageStorage();
                foreach (var menuCard in menuCards)
                {
                    if (menuCard.ImagePath != null)
                    {
                        menuCard.Image = await imageStorage.ReadImageAsync(menuCard.ImagePath);
                    }
                }
            }
            return menuCards;
        }