从Windows Phone 8.1运行时组件

时间:2015-06-04 09:55:44

标签: c# c++ silverlight windows-runtime windows-store-apps

我试图从Windows Phone 8.1 C ++运行时组件访问CoreWindow。该组件需要对CoreWindow触发的某些事件做出反应。我有以下代码。

IAsyncAction^ MyClass::RegisterCoreWindowVisibilityChanged()
{
    return CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::High,
        ref new DispatchedHandler(
        [this]
        {
            auto eventHandler = ref new TypedEventHandler<CoreWindow^, VisibilityChangedEventArgs^>(this, &MyClass::OnCoreWindowVisibilityChanged);
            Window::Current->CoreWindow->VisibilityChanged += eventHandler;
        }
    ));
}

当使用该组件的应用程序是通用应用程序时,这很正常,但在具有访问冲突异常的silverlight应用程序中失败。

0xC0000005: Access violation reading location 0x00000000.

显然Windows::Current在silverlight应用中返回null。有没有办法做到这一点,以便它在Silverlight和Windows商店应用程序中工作?

1 个答案:

答案 0 :(得分:1)

该对象仅在通用应用程序中可用(如documented)。

您需要条件化编译或考虑切换到桌面和手机的通用应用程序。