-
Notifications
You must be signed in to change notification settings - Fork 261
Closed
Description
How do I convert this code from the default UWP project. I cannot get the continuations right according to the compiler:
// Function that reads from a binary file asynchronously.
inline Concurrency::task<std::vector<byte>> ReadDataAsync(const std::wstring& filename)
{
using namespace Windows::Storage;
using namespace Concurrency;
auto folder = Windows::ApplicationModel::Package::Current->InstalledLocation;
return create_task(folder->GetFileAsync(Platform::StringReference(filename.c_str()))).then([] (StorageFile^ file)
{
return FileIO::ReadBufferAsync(file);
}).then([] (Streams::IBuffer^ fileBuffer) -> std::vector<byte>
{
std::vector<byte> returnBuffer;
returnBuffer.resize(fileBuffer->Length);
Streams::DataReader::FromBuffer(fileBuffer)->ReadBytes(Platform::ArrayReference<byte>(returnBuffer.data(), fileBuffer->Length));
return returnBuffer;
});
}
Here is my sorry attempt:
return create_task(folder.GetFileAsync(winrt::hstring_ref(filename.c_str()))).then([](StorageFile const& file)
{
return FileIO::ReadBufferAsync(file);
//}).then([] (Streams::IBuffer^ fileBuffer) -> std::vector<byte>
}).then([](Streams::IBuffer const& fileBuffer)->std::vector<byte>
{
std::vector<byte> returnBuffer;
//returnBuffer.resize(fileBuffer->Length);
returnBuffer.resize(fileBuffer.Length());
//Streams::DataReader::FromBuffer(fileBuffer)->ReadBytes(Platform::ArrayReference<byte>(returnBuffer.data(), fileBuffer->Length));
Streams::DataReader::FromBuffer(fileBuffer).ReadBytes(winrt::array_ref<byte>(returnBuffer));
return returnBuffer;
});
Metadata
Metadata
Assignees
Labels
No labels