Я пытаюсь прочитать некоторые данные спрайта (мой собственный тип файла данных), которые я поместил в каталог активов 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, он работает.Но как мне ждать результата операции?