Я верю, что в реализации FolderPicker.PickSingleFolderAsync есть ошибка в мобильном телефоне Windows 10: вызов этой функции вызывает некоторую ошибку и останавливает нормальный поток выполнения кода.У кого-либо еще проблемы с FolderPicker.PickSingleFolderAsync на мобильном?
Что делает его безумным, однако, заключается в том, что неправильное поведение происходит только тогда, когда приложение работает без отладчика, что делает невозможным точное определение того, что происходит.
Рассмотрим следующий код:
public async Task<bool> UserSelectFolderAsync()
{
var picker = new FolderPicker();
picker.SuggestedStartLocation = PickerLocationId.Desktop;
picker.FileTypeFilter.Add(".");
await ShowDialogAsync("Picking folder");
var folder = await picker.PickSingleFolderAsync();
await ShowDialogAsync("Picked folder");
if (folder == null)
return false;
StorageApplicationPermissions.FutureAccessList.Clear();
selectedFolder = folder;
StorageApplicationPermissions.FutureAccessList.Add(selectedFolder);
return true;
}
private async Task ShowDialogAsync(string message)
{
MessageDialog showDialog = new MessageDialog(message);
await showDialog.ShowAsync();
}
Update
Я исследовал этот вопрос дальше, и я считаю, что это вызвано приложение приостанавливается, пока пользователь взаимодействует с подборщика файла ,
На мобильном телефоне, вызывая средство выбора, открывает другое приложение, проводник и устанавливает его на переднем плане с обычными последствиями с точки зрения жизненного цикла приложения. Я был в состоянии достаточно надежно воспроизвести проблему на эмуляторе с отладчиком, придаваемом:
- Открытие файла сборщика
- Переход к местоположению: onless я нажимаю на устройстве или SD карту в самой первой странице подборщика сборщик не кажется, взять на себя, как на переднем плане приложение
- Приостановка приложение: от «Debug Location» панели инструментов нажмите кнопку приостановить
- Подтверждение выбора в палитре
в м в любых случаях это приводит к тому, что какой-либо код следует за кодом
await picker.PickSingleFolderAsync();
заявление не исполняется.
К сожалению, в то время как на Windows Phone 8 способ борьбы с подборщиком означал использование
picker.PickFolderAndContinue();
и явно имеет дело с приложением подвеской, делая так больше не возможно на Windows 10: вызов вышеупомянутого метода бросает исключение ,
Есть ли у вас что-то в * Приостановление * или * Вводные события (возобновление и уход)? – Romasz
Нет, у меня там ничего нет – Alberto
Я тестировал ваш код, но не могу воспроизвести вашу проблему.Вы тестировали в реальном устройстве? В Windows 10 поведение «FolderPicker» отличается от поведения в Windows 8.1. Нет необходимости использовать метод 'PickFolderAndContinue'. – Scavenger