【发布时间】:2021-09-30 17:20:00
【问题描述】:
我正在 .NET Core 3.1 上构建 WPF 应用程序。基本上,应用程序的设置是一个带有两个选项卡的选项卡控件的主屏幕。每个选项卡都有一个在后台运行的线程来从不同的设备中提取数据。
在每个选项卡中,我都有一个框架,其中包含一个页面,以便每次更改选项卡时每个页面都会打开和关闭,以减少 UI 线程上的负载。
<TabControl SelectedItem="{Binding SelectedMainTab, Mode=TwoWay}">
<!-- SCAN TAB -->
<TabItem x:Name="ScanTab">
<TabItem.Header>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" Width="100" Height="40" HorizontalAlignment="Center">
<TextBlock Style="{StaticResource TabTextBlock}" Text="Scan" VerticalAlignment="Center" Margin="5,0"/>
</StackPanel>
</TabItem.Header>
<Frame Source="ScanView.xaml"/>
</TabItem>
<!-- VALIDATION TAB -->
<TabItem x:Name="ValidationTab">
<TabItem.Header>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" Width="150" Height="40" HorizontalAlignment="Center">
<TextBlock Style="{StaticResource TabTextBlock}" Text="Validation" VerticalAlignment="Center" Margin="5,0"/>
</StackPanel>
</TabItem.Header>
<Frame Source="ValidationView.xaml"/>
</TabItem>
</TabControl>
基本上,当页面卸载时,我让它停止正在运行的线程,轮询设备状态。很简单。但是当我加载应用程序并开始在选项卡之间来回切换时会发生什么。 UI 冻结,然后崩溃并显示 An Exception 'System.ExecutionEngineException' occurred in DirectWriteForwarder.dll
没有发生这种情况的行号,并且通过一些谷歌搜索,我似乎无法找到关于这个 DLL 是什么的太多信息,除了它是 .net 的一部分。任何帮助将不胜感激!
编辑
在尝试复制错误时,我也让它崩溃,System.Collections.dll 是发生异常的位置。但同样的例外。
【问题讨论】: