我正在尝试从Windows商店应用中的“我的图片”文件夹中创建文件夹结构。但我似乎无法通过第一级。
我使用以下代码创建我的第一级文件夹:
IAsyncOperation<StorageFolder> appFolder = Windows.Storage.KnownFolders.PicturesLibrary.GetFolderAsync("AppPhotos");
if (appFolder==null)
{
//Create folder
appFolder = Windows.Storage.KnownFolders.PicturesLibrary.CreateFolderAsync("AppPhotos");
}
现在我想在此调用Level1下面创建另一个文件夹。
我原本希望能够做到以下几点:
appFolder.CreateFolderAsync("Level1");
但我的appFolder没有CreateFolderAsync方法。
那么,如何创建该文件夹,然后我将如何选择它呢?
提前致谢
我正在使用Visual Studio 2012,C#4.5,XAML,我正在编写一个Windows应用商店。
答案 0 :(得分:7)
您似乎错过了那里的异步/等待革命,并假设获取文件夹的操作是一个文件夹。这应该有效:
var appFolder = await Windows.Storage.KnownFolders.PicturesLibrary.GetFolderAsync("AppPhotos");
if (appFolder == null)
{
//Create folder
appFolder = await Windows.Storage.KnownFolders.PicturesLibrary.CreateFolderAsync("AppPhotos");
}
您还需要在方法签名中添加async
关键字,无论上述代码位于何处,如果您的方法返回类型T
的值,也需要将其更改为返回{{1} },所以对于方法签名:
Task<T>
你会把它改成
private void MyMethod()
如果您当前的签名是
private async Task MyMethod()
你需要做
private bool MyMethod()
最后在最后一种情况下 - 您还需要更改来自
的来电private async Task<bool> MyMethod()
到
var myValue = MyMethod();
等。标记所有使用var myValue = await MyMethod();
关键字进行调用等待其他方法的方法。
答案 1 :(得分:-1)
在图片库中创建文件夹和子文件夹:
StorageFolder appFolder;
try
{
appFolder = await Windows.Storage.KnownFolders.PicturesLibrary.GetFolderAsync("AppPhotos");
}
catch (Exception ex)
{
appFolder = null;
}
if (appFolder == null)
{
//Create folder
appFolder = await Windows.Storage.KnownFolders.PicturesLibrary.CreateFolderAsync("AppPhotos");
}
//Create sub-folder
await appFolder.CreateFolderAsync("level1");