Я пытаюсь получить доступ к CoreWindow из компонента времени выполнения Windows Phone 8.1 C ++. Компонент должен реагировать на некоторые события, запускаемые 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. Есть ли способ сделать это так, чтобы он работал как в Silverlight, так и в приложении Windows Store?
Этот объект доступен только в универсальном приложении (как документированный).
Вам нужно будет либо условно компилировать, либо подумать о переходе на универсальное приложение как для настольного компьютера, так и для телефона.