Uwp 当I';我正在调用GetFolderFromPathAsync

Uwp 当I';我正在调用GetFolderFromPathAsync,uwp,Uwp,我的应用程序在有机会运行一次之前就完全冻结了。以下是上下文: 我正在构建一个UWP应用程序,它将与用户目录一起工作,监视其中的文件,并在UI控件中列出它们。我通过创建一个手动文件夹选择提示,将该目录添加到futureaccess列表中。我还有一个服务类,它应该给我一个驻留在该目录中的文件列表。我一使用GetFolderFromPathAsync方法,应用程序就会冻结。没有例外或任何类型的错误,应用程序尝试启动,只是无限期地处于启动过程中。 下面是调用该方法的类: 公共类ReplayDirecto

我的应用程序在有机会运行一次之前就完全冻结了。以下是上下文: 我正在构建一个UWP应用程序,它将与用户目录一起工作,监视其中的文件,并在UI控件中列出它们。我通过创建一个手动文件夹选择提示,将该目录添加到futureaccess列表中。我还有一个服务类,它应该给我一个驻留在该目录中的文件列表。我一使用GetFolderFromPathAsync方法,应用程序就会冻结。没有例外或任何类型的错误,应用程序尝试启动,只是无限期地处于启动过程中。 下面是调用该方法的类:

公共类ReplayDirectoryManager
{
公共异步静态任务GetAllReplaysFromReplayDirectory()
{
字符串replayDirectoryPath=SettingsServices.SettingsService.Instance.ReplayFolderLocation;
StorageFolder replayFolder=等待StorageFolder.GetFolderFromPathAsync(replayDirectoryPath);
返回新列表(等待replayFolder.getFileAsync());
}
}
我如何让我的代码工作?有什么建议吗

下面是我用来将位置添加到futureaccess列表的代码

FolderPicker-picker=new FolderPicker();
picker.SuggestedStartLocation=PickerLocationId.DocumentsLibrary;
picker.FileTypeFilter.Add(“*”);
StorageFolder folder=Wait picker.PickSingleFolderAsync();
如果(文件夹!=null)
{
Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList.Add(文件夹);
ReplayFolderLocation=文件夹.Path;
}

当您使用Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList.Add(文件夹)时您可以获取令牌

您可以使用“将令牌保存到”设置

您可以通过令牌获取文件夹

folder =  await StorageApplicationPermissions.FutureAccessList.GetFolderAsync(token);

@Romasz Thx.

您是否试图记住FutureAccessList.Add(folder)返回的令牌,然后使用它获取StorageFolder?通常情况下,这是应该做到的,不要通过UWP中的路径访问文件/文件夹。该路径中有多少文件/文件夹?尝试使用一个空文件夹,并告诉我们它是如何运行的。这只是一个注释,让它尝试并显示更好的方式,但这不可能解决问题-在这种情况下,OP应该看到AccessException,但他的应用程序冻结。他可能需要提供更多信息。@Romasz我发现当我使用haze路径时,它会冻结,我已经可以访问该路径,但我没有使用正确的方法获取它。@Romasz他使用FutureAccessList,但没有保存令牌,他保存的路径不是官方推荐的方法,看起来这很有帮助。我有另一个基本的应用程序,我在没有MVVM的情况下测试代码,它运行良好,不需要令牌。奇怪的