WinRT - Получить список файлов и каталогов

Есть ли способ получить список файлов / каталогов синхронно с C++ или C# в приложениях Windows Store Apps/ Windows Phone? Все примеры асинхронно..

2 ответа

Решение

Решение этого вопроса помогло мне: как бы я синхронно запустил асинхронный метод Task ?

    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

PS Я забыл упомянуть, что мне нужно синхронно читать список файлов / каталогов для моей игры на C++, а не приложения. Я портирую существующий код с iphone/android, поэтому есть некоторые места, которые зависят от результата от функции.

В большинстве случаев вы захотите сделать это асинхронно. Пользователям не нравится, когда пользовательский интерфейс приложения зависает, а система await пытается сделать асинхронное программирование как можно более плавным, поэтому вам не нужно реализовывать значительное количество пользовательского кода, чтобы приложение реагировало.

Тем не менее, для случаев, которые вряд ли окажут значительное влияние на отзывчивость, вы можете работать синхронно:

Если файлы находятся в папках данных install или application, тогда приложение может получить к ним доступ через стандартный файловый API C++. У приложения не будет разрешений для файлов в других местах, чтобы сделать это, и ему нужно будет использовать асинхронный API StorageItem (StorageFolders и StorageFiles)

Если приложение вызывает StorageItem из фонового потока, оно может синхронно ожидать завершения асинхронной опции. Тем не менее, приложение не может блокировать поток пользовательского интерфейса следующим образом: Task.Wait потерпит неудачу в потоке пользовательского интерфейса.

var thread = myFolder.GetFilesAsync().AsTask();
thread.Wait();
Другие вопросы по тегам