Сбой UWP — create_task при запуске под управлением Debug x64 вместо x86

#visual-studio #asynchronous #uwp #task #c -cx

#visual-studio #асинхронный #uwp #задача #c -cx

Вопрос:

У меня есть следующие асинхронные программные коды, которые извлекают файл из UWP пакета приложений:

 Uri ^source = ref new Uri("ms-appx:///head.html");
auto getFileTask = create_task(StorageFile::GetFileFromApplicationUriAsync(source));
  

Когда я запускаю код в режиме Visual Studio 2017 in Debug x86 , он работает нормально. Однако его запуск в Debug x64 приводит к сбою приложения со следующей ошибкой:

 HRESULT:0x80070002 The system cannot find the file specified.
WinRT information: The system cannot find the file specified.
  

и Visual Studio разрывает файл ppltasks.h в этом коде:

 __declspec(noinline)
~_ExceptionHolder()
{
    if (_M_exceptionObserved == 0)
    {
        // If you are trapped here, it means an exception thrown in task chain didn't get handled.
        // Please add task-based continuation to handle all exceptions coming from tasks.
        // this->_M_stackTrace keeps the creation callstack of the task generates this exception.
            _REPORT_PPLTASK_UNOBSERVED_EXCEPTION();
    }
 }
  

Любая помощь?

Комментарии:

1. Что вы делаете с getFileTask ? GetFileFromApplicationUriAsync Произошел сбой, но ваш код не обработал сбой.

2. С @RaymondChen пока ничего не делается getFileTask . Как справиться с ошибкой? Включение a try...catch приводит к той же ошибке.

3. В GetFileFromApplicationUriAsync возникло исключение, но вы его не обработали. Вы можете увидеть пример обработки ошибок в примере FileAccess, сценарий 1 . Возможно, вы захотите переключиться с C / CX (нестандартное расширение) на C / WinRT (стандартный C ). Вот версия C / WinRT .