Как загрузить файл ресурса из каталога активов приложения? - PullRequest
0 голосов
/ 25 мая 2019

Я пытаюсь прочитать некоторые данные спрайта (мой собственный тип файла данных), которые я поместил в каталог активов APP.Вот часть кода, которая не работает:

using namespace Windows::Storage;
using namespace concurrency;
using namespace Platform;

String^ fileName = "Assets\\testSprite.ssp";
String^ path = "";
StorageFolder^ InstallationFolder = Windows::ApplicationModel::Package::Current->InstalledLocation;

auto asyncOperation = InstallationFolder->GetFileAsync(fileName);
auto getFileTask = create_task(asyncOperation);

getFileTask.then([&path](task<StorageFile^> task)
{
    try
    {
        StorageFile^ myStorageFile = task.get();
        // .get() didn' t throw, so we succeeded.
        OutputDebugString(L"File exists.");
        path = myStorageFile->Path;
    }
    catch (Platform::COMException^ e)
    {
        //Example output: The system cannot find the specified file.
        OutputDebugString(e->Message->Data());
    }
}).get();

// this line exists to check the path result, i put a breakpoint on it.
path += "";

Программа действительно вылетает, несмотря на блок try / catch, который я там поместил.

Вот ошибки, которые я получаюв режиме отладки:

Exception levée à 0x00007FFA07AC9129 dans Dungeons of Nargoth.exe :     exception Microsoft C++ : Concurrency::invalid_operation à l'emplacement de     mémoire 0x0000008809CFCB38.
Exception non gérée à 0x00007FF9BB84AFAC (ucrtbased.dll) dans Dungeons of     Nargoth.exe : Un paramètre non valide a été passé à une fonction qui considère     les paramètres non valides comme une cause d'erreur irrécupérable.

Я проверил, что файл находится в правильном каталоге, и это так.Он находится в:

"Dungeons of Nargoth\x64\Debug\Dungeons of Nargoth\AppX\Assets\testSprite.ssp"

РЕДАКТИРОВАТЬ: Когда я удаляю .get () после блока catch, он работает.Но как мне ждать результата операции?

...