Как поддерживать событие StorageFile over Shutdown в приложении Магазина Windows?

Вопрос

Если пользователь дает моему приложению файл с помощью FileOpenPicker, возможно ли это, и если возможно, как мне сохранить ссылку на него во время завершения работы в жизненном цикле приложения?

Проблемы

Я не могу использовать программный доступ, предоставленный возможностями, поскольку файл может (и, вероятно) быть открыт из мест, отличных от возможностей папок, к которым предоставляется доступ.

Пример этого

Я создаю редактор текстовых файлов и могу сохранять содержимое при приостановке и восстанавливать его при начните, это не проблема. Проблема в том, что пользователь открывает файл и может нажать «Сохранить» в любой момент, чтобы сохранить его без запроса, поскольку я сохраняю ссылку на StorageFile как в личном поле. Если приложение закрывается, кажется, нет никакого способа снова получить этот StorageFile без запроса пользователя.

Сведения о приложении Магазина Windows

Жизненный цикл

В приложении Магазина Windows работа приложения будет приостановлена, когда пользователь откажется от приложения, и если на компьютере возникнет нехватка памяти, оно будет закрыто. шаблон заключается в сохранении при приостановке (поскольку нет способа справиться с завершением работы), а затем возобновлении при следующем запуске путем загрузки сохраненных данных.

Чтение данных из файлов

В приложении Магазина Windows есть два способа доступа к файлам: либо вы просите пользователя предоставить вам файл с FileOpenPicker или подписаться на возможности, которые предоставляют некоторый программный доступ к некоторым папкам.


person Robert MacLean    schedule 09.11.2012    source источник


Ответы (1)


Вы можете использовать это решение: http://www.jonathanantoine.com/2012/08/06/keep-access-to-filesfolders-the-user-granted-you/

Сохраните его в FutureAccessList:

var picker = new FolderPicker();
picker.FileTypeFilter.Add("*");
var folder = await picker.PickSingleFolderAsync();

StorageApplicationPermissions.FutureAccessList.AddOrReplace(Token, folder);

И получить его обратно:

var folder = await StorageApplicationPermissions
    .FutureAccessList.GetFolderAsync(Token);
person Jonathan ANTOINE    schedule 09.11.2012