Skip to content

Converting "create_task" #57

@Zingam

Description

@Zingam

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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions