我目前正在研究一個需要幾個文本資源的metro應用程序。構建過程的一部分是將所有這些資源複製到應用程序安裝目錄內的文件夾中。我想要做的是收集這些資源文件的列表,並相應地處理每一個。不幸的是,我的嘗試並不成功。WinRT C++中的異步文件操作
由於我爲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> ^'
該錯誤不作出任何意義,我。我試着重寫上面的代碼,以便lambda處理函數不是內聯的,但它沒有區別。我不確定有什麼問題。
任何想法?提前致謝。
你應該使用的,而不是你做什麼任務''及其'然後()'方法。它會使你的代碼更簡潔更清晰。 –
svick
2012-03-31 10:47:58
同意svick:ppl是你的朋友。 – 2012-03-31 15:57:36