C# WPF.NETV4.7.2在调试和直接模式下运行的区别

C# WPF.NETV4.7.2在调试和直接模式下运行的区别,c#,wpf,datagrid,C#,Wpf,Datagrid,我使用的是.NET4.0,现在我已更新到.NET4.7.2。我注意到了非常令人担忧的问题。现在,当从Visual Studio(2012)调试器运行或直接从exe运行时,程序的行为会有所不同 我注意到,调试器不会出现这两个问题,但在从exe运行时确实会出现这两个问题: 使用剩余宽度的DataGrid列只显示该列容纳数据的最小宽度 Page加载的事件只是偶尔触发。这似乎受到显示页面时所做工作量的影响。就像如果有太多的工作,它只是不麻烦启动事件 还有谁有这个或者知道为什么吗 更多关于这个的信息。我

我使用的是.NET4.0,现在我已更新到.NET4.7.2。我注意到了非常令人担忧的问题。现在,当从Visual Studio(2012)调试器运行或直接从
ex
e运行时,程序的行为会有所不同

我注意到,调试器不会出现这两个问题,但在从
exe
运行时确实会出现这两个问题:

  • 使用剩余宽度的
    DataGrid
    列只显示该列容纳数据的最小宽度

  • Page
    加载的
    事件只是偶尔触发。这似乎受到显示页面时所做工作量的影响。就像如果有太多的工作,它只是不麻烦启动事件

  • 还有谁有这个或者知道为什么吗


    更多关于这个的信息。我发现它总是触发页面加载事件,但这是在我订阅它之前发生的


    这意味着在调试过程中,事情以不同的速度发生,导致事情以不同的顺序发生-竞争条件。

    他们在4.7中引入了一种新的分配算法,以防止在某些情况下,在
    网格
    的布局过程中出现无限循环。有关更多信息,请参阅

    您可以通过向
    App.config
    文件添加一个开关来禁用新算法:

    <runtime>
      <AppContextSwitchOverrides value="Switch.System.Windows.Controls.Grid.StarDefinitionsCanExceedAvailableSpace=true" />
    </runtime>
    
    
    
    您是否使用相同的配置(调试、发布?)运行exe?Microsoft修复了问题,但这并不意味着他们没有创建新的问题。在没有VS的情况下,您是否会遇到同样的问题?新版本的VS使用了更多的资源,这可能就是问题2出现的原因。奇怪的是,如果相同的问题只是在没有VS的情况下运行exe,那么在调试速度较慢的情况下,您会看到较少的资源冲突,或者调试速度较慢,因此B需要足够长的时间,以便A在准备就绪之前完成,但在发布版本下,它的优化程度更高,B可以在A完成之前完成。。