Vanilla WPF应用程序挂在一个客户的计算机上

时间:2011-05-09 10:56:57

标签: wpf hang

在客户处,我们的一个WPF应用程序开始挂起。当尝试用最小的工作示例重现问题时,我发现即使是最基本的(非平凡的)WPF应用程序也会挂在该机器上。

示例A :在Visual Studio 2008中创建一个新的C#WPF项目。不做任何更改,编译它并在客户的计算机上运行它。它会运行。

示例B :以示例A为例,将TextBlock添加到主窗体Window1

<Window ...>
    <Grid>
        <TextBlock>Test</TextBlock>
    </Grid>
</Window>

编译应用程序并在客户的计算机上运行它。它将挂起:标题栏和窗口边框是可见的,内部是透明的,窗口不会对任何东西做出反应(无法移动或关闭)。必须使用任务管理器关闭应用程序。

显然,该客户的WPF已被破坏。这是一个已知的问题,即之前是否有人遇到它并且已经知道如何解决它(例如重新安装.net 3.5 SP1等)?

开发机器是W7SP1,客户的机器是XP(可能是SP3,没有检查)。

2 个答案:

答案 0 :(得分:5)

结帐Tom Dudfield's instructions to clear the WPF font cache。对于几个用户来说,这对我有用。

答案 1 :(得分:0)

另外,我最近有一个更复杂的例子。

<强>挥舞:

我试过这个清理字体缓存的东西,它对我的​​悬挂应用程序没有任何作用,但是YMMV。然而它似乎无害。

还尝试了NGEN的所有框架内容,但这并没有解决问题。

<强> SOLUTION:

在我的MVVM应用程序中,我在标签页上删除的复杂控件上有一个ItemsControl(通用,而不是真正的ListBox)。 ItemsControl提供了大约14个'数据行',这些数据行由绑定到一个小集合的自定义控件组成,该集合本身被ScrollViewer包围。随着ScrollViewer的出现,选定的计算机将无休止地肆虐并陷入困境。评论Xaml使得应用程序表现得非常好,几乎排除了支持ViewModel中的问题。

删除周围的ScrollViewer消除了这个问题,无论如何它都不是必需的。我确实怀疑真正的问题潜伏在某个地方,但坦率地说没有时间或耐心进一步调查......

片段

<!--<ScrollViewer ScrollViewer.VerticalScrollBarVisibility="Auto"
                  ScrollViewer.CanContentScroll="True" Grid.Row="7" -->
    <ItemsControl   Grid.Row="7" 
            VerticalAlignment="Stretch"    
            HorizontalAlignment="Stretch"
            Name="FileSettingsList"  
            ItemsSource="{Binding MigratorFiles.FilesCollection}"   
            BorderThickness="2"                          
            HorizontalContentAlignment="Left"
            Template="{StaticResource   FileNameSettingsItemsControlTemplate}"                          
            ItemsPanel="{StaticResource FileNameSettingsItemsPanelTemplate}" 
            ItemTemplate="{StaticResource FileNameSettingsItemDataTemplate}"  >
    </ItemsControl>
    <!-- /ScrollViewer -->