我有一个使用 C++/CX 编写的 Windows 8 Store 应用程序,我需要将多个文件(一次)从用户选择的位置复制到应用程序的 localdata 文件夹。
在 Windows 运行时,我发现只有 StorageFile::CopyAsync API 允许我一次复制一个文件。我这样做:
task<IVectorView<StorageFile^>^>(openPicker->PickMultipleFilesAsync()).then([this](IVectorView<StorageFile^>^ fileVector)
{
m_copyTasks.clear();
for (auto file : fileVector)
{
m_copyTasks.push_back(create_task(file->CopyAsync(ApplicationData::Current->TemporaryFolder, file->Name, NameCollisionOption::ReplaceExisting)));
}
when_all(begin(m_copyTasks), end(m_copyTasks)).then([this](std::vector<StorageFile^> results)
{
for (auto copiedFile : results)
{
// do stuff
}
}).then([this]()
{
// do stuff
});
});
有没有更好的选择,它不会强迫我为每个文件 bur 创建单独的任务,而是允许我一次性复制用户选择的文件向量?