0

WinRTを使用して、音楽コレクションを NAS システムから Windows Phone デバイスに同期しようとしています。電話の Music フォルダーにフォルダーを作成するには、次のスニペットを使用します。

StorageFolder DeviceFolder = ( await KnownFolders.RemovableDevices.GetFoldersAsync() ).FirstOrDefault( a => a.Name == "zeroskyx-lumia" );
StorageFolder PhoneMusicFolder = await DeviceFolder.GetFolderAsync( @"Phone\Music" );
await DeviceFolder.CreateFolderAsync( @"Phone\Music\Test" );

Phone\Music に新しいフォルダ "Test" が作成されることを期待しています。ただし、次の例外がスローされます。

System.AggregateException: 1 つ以上のエラーが発生しました。---> System.Runtime.InteropServices.COMException: 不明なエラー この StorageFolder 内にアイテムを作成できません。これは、グループ化オプションを使用してクエリを作成してフォルダを取得した場合に発生する可能性があります。
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (タスク タスク) で System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (タスク タスク) で

Phone\Music にフォルダーを手動で作成し、スニペットを使用してそのフォルダーにサブディレクトリを作成すると、操作は成功します (そのため、WinRT ブローカー マニフェストの欠落の問題はありません)。

誰も同じ問題に遭遇しましたか? ここで何が間違っていますか?

よろしくお願いいたします。

-サイモン

4

1 に答える 1

0

私の知る限り、Windows API では、「フル パス」を渡すフォルダー作成を発行することはできませ。「create\all\these\subfolders\for\me」(Linux の「mkdir -p」に相当)。

コード スニペットを機能させるには、まず「Phone/Music」サブフォルダーを表す StorageFolder を取得し、そこからフォルダー作成を発行する必要があります。

StorageFolder DeviceFolder = ( await KnownFolders.RemovableDevices.GetFoldersAsync() ).FirstOrDefault( a => a.Name == "zeroskyx-lumia" );
StorageFolder PhoneMusicFolder = await DeviceFolder.GetFolderAsync( @"Phone\Music" );
await PhoneMusicFolder.CreateFolderAsync( "Test" );
于 2015-02-24T13:58:40.237 に答える