我试图建立一条简单的滚动道路"适用于Windows 8 / Store / Metro的动画/今天所谓的动画,但不断发生间歇性崩溃。
以下是一些要重现的代码,只需创建一个新的空白Windows Store VB项目(在VS2012或2013中),并将MainPage.xaml.vb中的OnNavigatedTo替换为:
Protected Overrides Sub OnNavigatedTo(e As Navigation.NavigationEventArgs)
Dim _rnd As New Random()
Dim g As Grid = Me.Content
g.Children.Clear()
Dim updates As New List(Of Action)
Dim iDepth = 20
Dim iWidth = 4
Dim midP = (iWidth / 2) + 0.5
' Add images
For x = 1 To iWidth
For y = 0 To iDepth - 1
Dim img As New Image With {.Stretch = Stretch.UniformToFill, .Source = New BitmapImage(New Uri("ms-appx:///Assets/StoreLogo.png")), .VerticalAlignment = Windows.UI.Xaml.VerticalAlignment.Center, .HorizontalAlignment = Windows.UI.Xaml.HorizontalAlignment.Center, .Width = 100, .Height = 100}
g.Children.Add(img)
Dim pp As New PlaneProjection()
img.Projection = pp
pp.LocalOffsetX = (x - midP) * 100
pp.LocalOffsetY = -(y * 100)
pp.RotationX = -75
pp.GlobalOffsetZ = 900
updates.Add(Sub()
pp.LocalOffsetY += 2
If pp.LocalOffsetY >= 100 Then
pp.LocalOffsetY = (iDepth - 1) * -100
End If
End Sub)
Next
Next
AddHandler CompositionTarget.Rendering, Sub()
For Each aFN In updates
aFN()
Next
End Sub
End Sub
让它运行一两分钟,它最终会崩溃。注意取决于iDepth和iWidth的值可能会影响崩溃前的时间(有时甚至根本不会)。尝试6和6快速崩溃对我来说。 以下是事件日志中的信息:
错误应用程序名称:XAMLBenchmark.exe,版本:1.0.0.0,时间戳:0x50f5de60
错误模块名称:ntdll.dll,版本:6.2.9200.16384,时间戳:0x5010aeb6
异常代码:0xc0000374
故障偏移:0x000ce881
错误进程ID:0xe98
错误申请开始时间:0x01cdf3736fe85fea
错误申请路径: H:\编程\项目\测试\ XAMLBenchmark \ BIN \调试\ AppX中\ XAMLBenchmark.exe
错误模块路径:C:\ Windows \ SYSTEM32 \ ntdll.dll
报告ID:c940b610-5f66-11e2-afa1-00247e0381dc
错误包全名:5c4576c8-cee9-410d-adcc-92242ee8ba45_1.0.0.0_neutral__eg50eqkjtk654
错误包相关应用程序ID:应用程序
有关崩溃的根本原因的任何想法?