Я хотел создать простой IsEmpty(StorageFolder directory)
метод, который работает в приложениях WinRT, т.е. использует асинхронный API. Я не вижу соответствующего метода в документации для класса StorageFolder, и Я тоже ничего не нашел в своих поисках. Извините, если я это пропустил!
Мне удалось создать следующий метод, который работает:
public static async Task<bool> IsEmpty(StorageFolder directory)
{
var files = await directory.GetFilesAsync();
if (files.Count > 0)
{
return false;
}
var folders = await directory.GetFoldersAsync();
if (folders.Count > 0)
{
return false;
}
return true;
}
Но ... есть ли способ чище? Либо собственный, либо то, что я мог кодировать ... Проверить, пуст ли каталог, должно быть просто, но я знаю, что раньше сталкивался с проблемами, когда просто пытался проверить, существует ли каталог или файл, используя асинхронный API WinRT .
Я также не совсем уверен, получают ли асинхронные вызовы GetFilesAsync и GetFoldersAsync каждый файл / папку в каталоге перед возвратом, или они каким-то образом могут получить только один элемент, прежде чем поймут, что Count будет выше 0 (я думаю ленивого вычисления, как в языке Haskell, но это C # ...). Если бы могли, то меня бы больше устроил этот метод :)