使用PlaneProjection动画在NTDLL.dll中随机崩溃 - WinRT / Metro

时间:2014-03-27 20:05:09

标签: c# vb.net windows-runtime microsoft-metro winrt-xaml

我试图建立一条简单的滚动道路"适用于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:应用程序

有关崩溃的根本原因的任何想法?

0 个答案:

没有答案