WinRT - 获取文件和目录列表

时间:2014-12-06 18:34:41

标签: c# c++ windows-runtime windows-phone-8.1 windows-8.1

有没有办法在Windows应用商店应用/ Windows手机应用中同步获取c ++或c#的文件/目录列表?所有示例都是异步的..

2 个答案:

答案 0 :(得分:0)

在大多数情况下,您需要异步执行此操作。当应用程序UI挂起时,用户不喜欢它,并且await系统尝试使异步编程尽可能顺利,因此您不必实现大量自定义代码来保持应用程序的响应。

也就是说,对于不太可能对响应能力产生重大影响的案例,您可以同步:

如果文件位于安装或应用程序数据文件夹中,则应用程序可以使用标准C ++文件API访问它们。该应用程序将没有其他文件的权限来执行此操作,并将需要使用异步StorageItem API(StorageFolders和StorageFiles)

如果应用程序从后台线程调用StorageItem,则它可以同步等待async选项完成。应用程序无法以这种方式阻止UI线程:Task.Wait将在UI线程中失败。

var thread = myFolder.GetFilesAsync().AsTask();
thread.Wait();

答案 1 :(得分:0)

这个问题的解决对我有用:How would I run an async Task<T> method synchronously?

    var task = Task.Run(async () => { await ... });
    task.Wait();

本文中的示例也正常工作。 http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2013/02/22/windows-8-winrt-storagefolder-hidden-files-net-c-appcontainers-brokering.aspx

P.S。 我忘了提一下,我需要同步阅读我的c ++游戏的文件/目录列表,而不是app。我从iphone / android移植现有代码,因此有些地方依赖于函数的结果。