【发布时间】:2020-11-23 15:56:54
【问题描述】:
我最近开始玩 C++/WinRT (https://marketplace.visualstudio.com/items?itemName=CppWinRTTeam.cppwinrt101804264)。
我的目标是创建一个下载文件并将其保存到下载文件夹的应用程序。我决定使用 BackgroundDownloader 类 (https://docs.microsoft.com/en-us/uwp/api/windows.networking.backgroundtransfer.backgrounddownloader?view=winrt-19041)。
但是,当我尝试创建 BackgroundDownloader 实例时,我的程序崩溃并出现以下异常:
Exception thrown at 0x76729AB2 in MyApp.exe: Microsoft C++ exception: winrt::hresult_error at memory location 0x004FEEF4.
int main()
{
// The line bellow causes the crash:
winrt::Windows::Networking::BackgroundTransfer::BackgroundDownloader backgroundDownloader;
}
我做错了什么?
【问题讨论】:
-
来自documentation:“使用
Windows.Networking.BackgroundTransfer通过toast 通知进行通信的应用必须在应用清单文件中声明它支持Toast。” -你遵守合同吗? -
C++/WinRT 抛出
winrt::hresult_error可以捕获的错误 docs.microsoft.com/en-us/windows/uwp/cpp-and-winrt-apis/… 我敢打赌 error.code().value 等于 0x8007109A (ERROR_NOT_APPCONTAINER) 因为你的环境不正确(你必须使用打包) . -
@IInspectable,我的应用程序没有“通过 toast 通知进行通信”,它甚至没有应用程序清单文件(它不是 UWP/打包应用程序)。
-
如果您使用的是控制台项目或其他桌面项目,您可能不会使用BackgroundDownloader API,因为该API的属性没有列出DualApiPartitionAttribute表示桌面应用程序支持该类型的类。
-
@SimonMourier 不再需要了。 WinRT 可与 Win32 应用程序一起使用
标签: c++ windows-runtime c++-winrt