.NET 4.7.x不会显示主窗口/ WPF升级到.NET到4.7.x会导致无限循环

时间:2019-04-29 07:51:29

标签: c# .net wpf

对于使用类似问题的WPF桌面应用程序的人们来说,如果遇到此问题,这里是一个摘要和解决方法,当.NET 4.7.x框架升级后您的应用程序窗口没有出现时。

问题

.net框架从4.6.2基本升级之后。到4.7.x版本,应用程序主窗口从未显示过,并且在无限循环中挂起。 mainwindow.show()函数从不返回到应用程序。问题与Microsoft .net 4.7.x有关,但由于调试和发现不容易。

根本原因

.Net 4.7包括一种新算法,用于为网格中宽度为'*'的列分配空间。在为4.7.x编译应用程序时,网格大小可能会导致应用程序陷入无限循环,从而锁定并冻结应用程序。

最初由@SamBent发表在GitHub/Microsoft/dotnet#604

1 个答案:

答案 0 :(得分:1)

解决方案/解决方法

在app.config中将StarDefinitionsCanExceedAvailableSpace开关设置为true以强制使用旧算法:

<configuration>
        <runtime>
            <AppContextSwitchOverrides value="Switch.System.Windows.Controls.Grid.StarDefinitionsCanExceedAvailableSpace=true" />
        </runtime>
</configuration>

其他上下文

https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/runtime/4.7-4.7.1#resizing-a-grid-can-hang

以上报告的问题已通过我的WPF桌面应用程序中的此解决方法得以解决。希望这可能对其他人有所帮助,因为调试过程可能会非常困难。此问题是.net 4.7.x错误,Microsoft尚未解决。