我目前正在开发一个需要一些文本资源的 Metro 应用程序。构建过程的一部分是将所有这些资源复制到应用程序安装目录内的文件夹中。我想做的是收集这些资源文件的列表,并相应地处理每个文件。不幸的是,我这样做的尝试并不成功。
因为我是为 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:“Windows::Foundation::IAsyncOperation<TResult>::Completed::set”:无法将参数 1 从“Windows::Foundation::AsyncOperationCompletedHandler<TResult> ^”转换为“Windows::Foundation::AsyncOperationCompletedHandler<结果> ^'
这个错误对我来说没有任何意义。我已经尝试重写上面的代码,以便 lambda 处理程序函数不是内联的,但它没有产生任何影响。我不确定出了什么问题。
有任何想法吗?提前致谢。