System.ExecutionEngineException 在 Windows 10 台设备上

System.ExecutionEngineException on Windows 10 device

我正在开发 Windows Phone 8.1 应用程序。它在 WP 8 和 WP 8.1 设备上工作正常,但在 Windows 10 的设备上它抛出

ExecutionEngineException was unhandled. An unhandled exception of type 'System.ExecutionEngineException' occurred in Unknown Module.

在 "Debug" 和 "Release" 的各个部分中,没有任何关于错误原因的数据。有些地方总是会抛出异常,而有些地方会不时抛出异常。下面的示例代码抛出异常 - 它基本上是一种在选项卡之间切换的方法,当点击按钮(带有图像的网格)时,这些选项卡是 StackPanels:

private void Grid_Tapped(object sender, TappedRoutedEventArgs e)
{
    if(!isMapVisible)
    {
        hideSection();
        map_wrapper.Visibility = Windows.UI.Xaml.Visibility.Visible;
        map_button.Background = new SolidColorBrush(ColorHelper.FromArgb(0xFF, 40, 110, 73));
        map_icon.Source = new BitmapImage(new Uri(FileHelper.getIconPath("tu_2.png")));
        isMapVisible = true;
    }
}

private void hideSection()
{
    if(isMapVisible)
    {
        map_button.Background = new SolidColorBrush(ColorHelper.FromArgb(0xFF, 238, 238, 238));
        map_icon.Source = new BitmapImage(new Uri(FileHelper.getIconPath("tu.png")));
        isMapVisible = false;
        map_wrapper.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
    }
    else if(isPhotoVisible)
    {
        photo_button.Background = new SolidColorBrush(ColorHelper.FromArgb(0xFF, 238, 238, 238));
        photo_icon.Source = new BitmapImage(new Uri(FileHelper.getIconPath("photo_green.png")));
        isPhotoVisible = false;
        image_wrapper.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
    }
    else if(isListVisible)
    {
        list_button.Background = new SolidColorBrush(ColorHelper.FromArgb(0xFF, 238, 238, 238));
        list_icon.Source = new BitmapImage(new Uri(FileHelper.getIconPath("!2.png")));
        isListVisible = false;
        news_wrapper.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
    }
}

最后我设法修复了代码。但是错误不在上面的代码中。我使用了一个叫做 "Safe Navigation" 的东西。示例如下代码所示:

Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
    rootFrame.Navigate(typeof(MainPage));
});

我还使用 await 运算符处理了所有异步方法(我在 运行 之前将其中一些方法异步处理)。其中一项改进修复了错误。

我知道这比原来的 post 晚了两年多,但也许这会帮助寻找此问题答案的人。我一直在从 Window 10 UWP 桌面应用程序中随机获取 System.ExecutionEngineExceptions。几天后,我找到了我的特定问题的答案。我使用了 MVVM 平台,我的一个视图中的 x:UID 已损坏。

它应该是:

该错误未被标记为 XAML 问题,因为与此类似的语法错误很多,但一旦我更正了该错误,通过删除不需要的等号,异常就消失了。

希望这对其他人有帮助。

克莱德

上面还有想补充的。 XAML 引擎不检查重复的 x:Uid,当我有两个同名的 x:Uid 时,我也遇到了这个错误。使我整个项目中的所有 x:Uid 都是唯一的(不幸的是扩展了资源文件),但这解决了任何进一步的问题。希望 XAML 设计师检查重复的 x:Uid 是否为 x:Name 所做的。

再说一次,希望对以后的人有所帮助。

干杯,

克莱德