繁体   English   中英

DirectWriteForwarder.dll 中发生异常“System.ExecutionEngineException”

[英]Exception 'System.ExecutionEngineException' occurred in DirectWriteForwarder.dll

我正在 .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

没有任何行号发生在谷歌搜索上,除了它是 .net 的一部分之外,我似乎无法找到太多关于这个 DLL 是什么的信息。 任何帮助将不胜感激!

编辑

在尝试复制错误时,我也让它崩溃,System.Collections.dll 是发生异常的位置。 不过同样的例外。

所以我可能对我自己的问题有一个答案。 我没有完全确定问题的原因。 但是发现这与垃圾收集有关,并且可能与我在切换选项卡时如何处理一个线程有关。

最终,在选项卡打开的页面的卸载事件中,我将“关闭”功能放置在 IsBackground = true 的线程中。 这将允许他们在不处理他们使用的页面中的某些属性的情况下处理自己。

这似乎解决了我的问题,因为我不再收到崩溃了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM