Vanilla WPF应用程序挂起在一个客户上';s机器
在一位客户处,我们的一个WPF应用程序开始挂起。当我试图用一个最小的工作示例重现这个问题时,我发现即使是最基本的(非平凡的)WPF应用程序也会挂在这台机器上 示例A:在VisualStudio2008中创建一个新的C#WPF项目。不做任何更改,编译并在客户的机器上运行。它将运行 示例B:以示例A为例,将文本块添加到主窗体Vanilla WPF应用程序挂起在一个客户上';s机器,wpf,freeze,Wpf,Freeze,在一位客户处,我们的一个WPF应用程序开始挂起。当我试图用一个最小的工作示例重现这个问题时,我发现即使是最基本的(非平凡的)WPF应用程序也会挂在这台机器上 示例A:在VisualStudio2008中创建一个新的C#WPF项目。不做任何更改,编译并在客户的机器上运行。它将运行 示例B:以示例A为例,将文本块添加到主窗体窗口1: <Window ...> <Grid> <TextBlock>Test</TextBlock>
窗口1
:
<Window ...>
<Grid>
<TextBlock>Test</TextBlock>
</Grid>
</Window>
试验
编译应用程序并在客户的机器上运行。它将挂起:标题栏和窗口边框可见,内部透明,窗口不会对任何东西做出反应(无法移动或关闭)。必须使用任务管理器关闭应用程序
显然,该客户的WPF已损坏。这是一个已知的问题吗?例如,以前是否有人遇到过它,并且已经知道如何解决它(例如重新安装.net 3.5 SP1等)
开发机器是W7SP1,客户的机器是XP(可能是SP3,没有检查)。请检查。它对我的几个用户都有效。此外,我最近在一个更复杂的例子中有过这种体验 连枷: 我尝试了这个清理字体缓存的方法,但它对我挂起的应用程序没有任何作用,只对YMMV起了作用。然而,这似乎是无害的 还尝试了对所有框架进行加密,但这并没有解决问题 解决方案: 在我的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 -->
Fine print:我知道从技术上讲,这不是一个编程问题。但是,它既不适用于Serveradmin,也不适用于超级用户,这是开发人员最可能遇到的问题。因此,我把它贴在这里。可能是视频驱动程序的问题吗?你有没有尝试过其他不是你开发的WPF应用程序,即以可执行形式从web下载的应用程序?@Daniel:谢谢你的提示,我会在有机会的时候尝试。我以前遇到过字体缓存挂起的问题-我不知道为什么或者如何解决它,但是看看任务管理器,看看它是否在旋转。可能是个线索。很高兴知道!!把这家伙的分数提高几分。我肯定我得再找一次。