在Windows应用商店应用中创建"我的图片"中的子文件

Sun*_*Sun 0 c# windows-runtime .net-4.5 winrt-xaml windows-store-apps

我正在尝试从Windows商店应用程序在"我的图片"文件夹中创建文件夹结构.但我似乎无法通过第一级.

我使用以下代码创建我的第一级文件夹:

IAsyncOperation<StorageFolder> appFolder = Windows.Storage.KnownFolders.PicturesLibrary.GetFolderAsync("AppPhotos");

if (appFolder==null)
{
    //Create folder
    appFolder = Windows.Storage.KnownFolders.PicturesLibrary.CreateFolderAsync("AppPhotos");
}
Run Code Online (Sandbox Code Playgroud)

现在我想在此调用Level1下创建另一个文件夹.

我原以为能够做到以下几点:

appFolder.CreateFolderAsync("Level1");
Run Code Online (Sandbox Code Playgroud)

但是我的appFolder没有CreateFolderAsync方法.

那么,我该如何创建该文件夹,然后我将如何选择它呢?

提前致谢

我正在使用Visual Studio 2012,C#4.5,XAML,我正在编写一个Windows应用商店.

Fil*_*kun 7

您似乎错过了那里的异步/等待革命,并假设获取文件夹的操作是一个文件夹.这应该工作:

var appFolder = await Windows.Storage.KnownFolders.PicturesLibrary.GetFolderAsync("AppPhotos");

if (appFolder == null)
{
    //Create folder
    appFolder = await Windows.Storage.KnownFolders.PicturesLibrary.CreateFolderAsync("AppPhotos");
}
Run Code Online (Sandbox Code Playgroud)

您还需要async在方法签名中添加关键字,无论上述代码位于何处,然后如果您的方法返回值类型T- 将其更改为return Task<T>,那么对于方法签名:

private void MyMethod()
Run Code Online (Sandbox Code Playgroud)

你会把它改成

private async Task MyMethod()
Run Code Online (Sandbox Code Playgroud)

如果您当前的签名是

private bool MyMethod()
Run Code Online (Sandbox Code Playgroud)

你需要做的

private async Task<bool> MyMethod()
Run Code Online (Sandbox Code Playgroud)

最后在最后一种情况下 - 你还需要改变你的来电

var myValue = MyMethod();
Run Code Online (Sandbox Code Playgroud)

var myValue = await MyMethod();
Run Code Online (Sandbox Code Playgroud)

标记所有使用async关键字进行调用等待其他方法的方法.