#pragma once #include #include #include namespace DX { inline void ThrowIfFailed(HRESULT hr) { if (FAILED(hr)) { // Set a breakpoint on this line to catch Win32 API errors. throw Platform::Exception::CreateException(hr); } } // Function that reads from a binary file asynchronously. inline Concurrency::task^> ReadDataAsync(Platform::String^ filename) { using namespace Windows::Storage; using namespace Concurrency; auto folder = Windows::ApplicationModel::Package::Current->InstalledLocation; return create_task(folder->GetFileAsync(filename)).then([] (StorageFile^ file) { return FileIO::ReadBufferAsync(file); }).then([] (Streams::IBuffer^ fileBuffer) -> Platform::Array^ { auto fileData = ref new Platform::Array(fileBuffer->Length); Streams::DataReader::FromBuffer(fileBuffer)->ReadBytes(fileData); return fileData; }); } }