【问题标题】:UWP navigation causing Access ViloationUWP 导航导致访问冲突
【发布时间】:2016-02-05 17:54:52
【问题描述】:

我正在将我的 WP 8.1 应用程序转换为 UWP,因为我对使用 prism 很感兴趣,所以我想我会从头开始构建我的应用程序。我创建了一个带有导航到另一个页面的按钮的页面,部署了应用程序并试了一下。当我单击按钮导航时,会执行以下代码

private void Button1_Click(object sender, RoutedEventArgs e)
{
    this.Frame.Navigate(typeof(TestPage));
}

然后使应用程序崩溃。当我在 VS2015 中查看输出窗口时,我在底部看到以下内容。

The program '[4760] MyApp.exe' has exited with code -1073741819 (0xc0000005) 'Access violation'.

两个页面都有 ViewModel 并使用 Prisms ViewModelLocator.AutoWireViewModel 进行设置。我尝试清除 ViewModels 的所有属性,因此它们是空的,没有代码,但什么也没做。在视图模型构造函数中放置一个断点,它在调试时确实到达了这一点。

任何想法这意味着什么或在哪里看?

更新:问题看起来是由控件模板引起的。我通过注释掉所有 XAML 然后将内容一一添加,将问题缩小到按钮控件。然后我找到了导致问题的控件,因此删除了绑定和样式模板。重新添加绑定,一切正常,重新添加模板并出现问题。

【问题讨论】:

  • 那么模板中有什么?我猜这是缺少资源,例如xaml 中定义的画笔

标签: c# prism uwp prism-6


【解决方案1】:

您可能需要使用调度程序在正确的线程上执行代码。

//Initiate and set this at the startup of your app, on the UI thread.
dispatcher = Windows.UI.Core.CoreWindow.GetForCurrentThread().Dispatcher;

然后使用调度器运行代码:

private async void Button1_Click(object sender, RoutedEventArgs e)
{
    await dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            this.Frame.Navigate(typeof(TestPage));
}

【讨论】:

  • 试过了,还是一样的问题。
猜你喜欢
  • 2010-11-05
  • 1970-01-01
  • 1970-01-01
  • 2011-08-22
  • 1970-01-01
  • 2012-05-22
  • 2016-06-15
  • 2018-12-07
  • 2012-05-24
相关资源
最近更新 更多