저는 현재 텍스트 리소스가 필요한 메트로 앱을 만들고 있습니다. 빌드 프로세스의 일부는 이러한 모든 리소스를 앱의 설치 디렉토리 안의 폴더에 복사하는 것입니다. 내가하고 싶은 것은 이러한 리소스 파일의 목록을 수집하고 이에 따라 각 리소스 파일을 처리하는 것입니다. 불행히도 그렇게하려는 나의 시도는 성공적이지 못했습니다.C++의 WinRT 비동기 파일 작업
저는 WinRT 용으로 만들었으므로 매우 유용한 "FindFirstFile"및 "FindNextFile"기능을 사용할 수 없습니다. WinRT 비동기 파일 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를 : '윈도우 :: 재단 :: IAsyncOperation < TResult> :: 완료 :: 설정': '윈도우에서 매개 변수 1 변환 할 수 없습니다 :: 재단 :: AsyncOperationCompletedHandler < TResult>^윈도우 :: '에서'재단 :: AsyncOperationCompletedHandler < TResult>^'오류가 나에게 어떤 의미를 만드는되지
. 위의 코드를 다시 작성하여 람다 처리기 함수가 인라인이 아니지만 차이를 만들지 않았습니다. 나는 틀린 것이 확실하지 않다.
아이디어가 있으십니까? 미리 감사드립니다.
당신이하는 일보다는'task'와'then()'메쏘드를 사용해야합니다. 코드를 더 짧고 명확하게 만듭니다. –
svick
svick 동의 : ppl은 당신의 친구입니다. –