コード例 #1
0
        private static async Task <StorageFile> SavePhotoAsync(FilteredPhotoModel photo, StorageFile file)
        {
            CachedFileManager.DeferUpdates(file);

            using (var fileStream = await file.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite))
                using (var photoStream = await photo.GetFilteredPhotoAsync())
                    using (var reader = new DataReader(photoStream))
                        using (var writer = new DataWriter(fileStream))
                        {
                            await reader.LoadAsync((uint)photoStream.Size);

                            var buffer = reader.ReadBuffer((uint)photoStream.Size);

                            writer.WriteBuffer(buffer);
                            await writer.StoreAsync();

                            await writer.FlushAsync();
                        }

            var status = await CachedFileManager.CompleteUpdatesAsync(file);

            if (status == Windows.Storage.Provider.FileUpdateStatus.Complete)
            {
                return(file);
            }
            else
            {
                return(null);
            }
        }
コード例 #2
0
        private async Task <StorageFile> SaveTemporaryPhotoAsync(FilteredPhotoModel photo)
        {
            var filename = Application.Current.Resources["PhotoSaveTemporaryFilename"] as string;
            var folder   = ApplicationData.Current.TemporaryFolder;

            if (filename != null)
            {
                var task = folder.CreateFileAsync(filename, Windows.Storage.CreationCollisionOption.ReplaceExisting).AsTask();
                task.Wait();
                var file = task.Result;

                CachedFileManager.DeferUpdates(file);

                using (var fileStream = await file.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite))
                    using (var photoStream = await photo.GetFilteredPhotoAsync())
                        using (var reader = new DataReader(photoStream))
                            using (var writer = new DataWriter(fileStream))
                            {
                                await reader.LoadAsync((uint)photoStream.Size);

                                var buffer = reader.ReadBuffer((uint)photoStream.Size);

                                writer.WriteBuffer(buffer);
                                await writer.StoreAsync();

                                await writer.FlushAsync();
                            }

                var status = await CachedFileManager.CompleteUpdatesAsync(file);

                if (status == Windows.Storage.Provider.FileUpdateStatus.Complete)
                {
                    return(file);
                }
                else
                {
                    return(null);
                }
            }

            return(null);
        }