2013-03-06 40 views
0

我试图从Windows商店应用程序的“我的图片”文件夹中创建文件夹结构。但我似乎无法通过第一级。从Windows应用商店应用程序的“我的图片”中创建子文件夹

我用下面的代码创建我的第一个级别的文件夹:

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

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

现在我要创建这个叫1级以下另一个文件夹。

我期待能做到以下几点:

appFolder.CreateFolderAsync("Level1"); 

但我没有从我的appFolder一个CreateFolderAsync方法。

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

在此先感谢

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

回答

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类型的值 - 更改它返回Task<T>,所以方法签名:

private void MyMethod() 

你将它更改为

private async Task MyMethod() 

,如果你当前的Signa自命为

private bool MyMethod() 

,你需要做的

private async Task<bool> MyMethod() 

终于在最后一种情况 - 你还需要从

var myValue = MyMethod(); 

改变你的来电

var myValue = await MyMethod(); 

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

+1

的'async'当量的'void'-返回方法的是'异步Task',不'异步void'。除此之外,很好的答案。 – 2013-03-06 22:32:30

+0

对,我忘了规则是为了避免火灾和忘记异步方法。 – 2013-03-06 22:51:10

+0

但你还没有回答我的问题。我已经可以创建名为AppPhotos的文件夹,但我希望能够在Level1中创建一个文件夹。这是个问题 – Sun 2013-03-07 10:19:21

0

要创建文件夹,并在图片库中的子文件夹中:

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"); 
相关问题