Windows10设备上的System.ExecutionEngineException
本文关键字:System ExecutionEngineException Windows10 | 更新日期: 2023-09-27 17:55:23
我正在开发一个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.
在"调试"和"发布"的各个部分中,没有任何关于出错的数据。有些地方总是抛出异常,有些地方会不时抛出异常。下面的示例代码抛出异常 - 它基本上是一种在选项卡之间切换的方法,当点击按钮(带图像的网格)时,选项卡是 StackPanel:
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;
}
}
我设法修复了代码。但是,上面的代码中没有错误。我使用了一种叫做"安全导航"的东西。该示例显示在下面的代码中:
Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
rootFrame.Navigate(typeof(MainPage));
});
我还使用运算符处理了所有异步方法await
(我之前已经将其中一些方法留给了异步运行)。其中一项改进修复了错误。
这比原始帖子晚了两年多,但也许这会帮助人们寻找这个问题的答案。我一直从 Window 10 UWP 桌面应用程序中获得明显的随机 System.ExecutionEngineExceptions。几天后,我找到了我特定问题的答案。我使用了 MVVM 平台,而我的一个视图中的 x:UID 已损坏。
它应该是:<文本块x:Uid>
它是:<文本块>文本块>
该错误未标记为 XAML 问题,因为许多与此类似的语法错误,但是一旦我通过删除不需要的等号来更正该错误,异常就消失了。
希望这对其他人有所帮助。
克莱德
还想添加到上面。XAML 引擎不检查重复的 x:Uid,当我有两个同名的 x:Uid 时,我也遇到了此错误。使整个项目中的所有x:Uid都是独一无二的(不幸的是扩展了资源文件),但这解决了任何进一步的问题。希望 XAML 设计器检查重复的 x:Uid 就像它对 x:Name 所做的那样。
再次,希望它在未来对某人有所帮助。
干杯
克莱德
对于在使用 Xamarin 时遇到ExecutionEngineException
的用户,请确保你拥有最新版本的 Microsoft.NETCore.UniversalWindowsPlatform
。
此问题已在 UWP 6.2.12 中修复:
修复了在 Xamarin 中加载 InAppUI 时的执行引擎异常。
https://github.com/microsoft/dotnet/blob/main/releases/UWP/net-native2.2/README.md