В настоящее время я работаю над приложением метро, которое требует нескольких текстовых ресурсов. Часть процесса сборки копирует все эти ресурсы в папку внутри каталога установки приложения. То, что я хотел бы сделать, - собрать список этих файлов ресурсов и обработать каждый из них соответственно. К сожалению, мои попытки сделать это были менее успешными.WinRT Асинхронные операции с файлами в C++
Поскольку я создаю для WinRT, я не могу использовать очень полезные функции FindFirstFile и FindNextFile. Я пытался выполнить эту работу с помощью операций ввода-вывода WinRT Asynchronous file IO.
auto getResourceFolder = installedLocation->GetFolderFromPathAsync( folderPath );
getResourceFolder->Completed = ref new Windows::Foundation::AsyncOperationCompletedHandler<Windows::Storage::StorageFolder^>(
[this](Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder^>^ operation) {
if(operation->Status == Windows::Foundation::AsyncStatus::Completed) {
auto resourceFolder = operation->GetResults();
auto getResourceFiles = resourceFolder->GetFilesAsync();
getResourceFiles->Completed = ref new Windows::Foundation::AsyncOperationCompletedHandler< IVectorView<Windows::Storage::IStorageFile^>^ >(
[this](Windows::Foundation::IAsyncOperation< IVectorView<Windows::Storage::IStorageFile^>^ >^ operation) {
if(operation->Status == Windows::Foundation::AsyncStatus::Completed) {
auto resourceFiles = operation->GetResults();
for(unsigned int i = 0; i < resourceFiles->Size; ++i) {
// Process File
}
}
});
}
});
который не может скомпилировать: C2664
об ошибке: 'Windows :: Foundation :: IAsyncOperation < TResult> :: Прошлые :: набор': не удается преобразовать параметр 1 из «Windows :: Foundation :: AsyncOperationCompletedHandler < TResult> ^»к 'Windows :: Foundation :: AsyncOperationCompletedHandler < TResult> ^'
ошибка не делает никакого смысла для меня. Я пробовал переписать вышеуказанный код, чтобы функции обработчика лямбда не были встроенными, но это не изменило ситуацию. Я не уверен, что случилось.
Любые идеи? Заранее спасибо.
Возможно, вы должны использовать 'task' и свой 'then()' вместо того, что вы делаете. Это сделает ваш код короче и понятнее. –
svick
Согласен с svick: ppl - ваш друг. –