系统线程

时间:2015-09-01 06:54:13

标签: c# wpf exception

我的WPF应用程序带有一些基于Viewport2DVisual3D的3D Rotator。

有时在某些生产PC上,程序会在系统线程中抛出异常。 非常经常产生异常 - 一个接一个10-20毫秒。此时UI线程没有响应,CPU占用25%的四核 - 所以1核满载,但操作系统没有生成"没有响应"申请。

Stacktrace

  

System.InvalidCastException:无法转换类型的对象   ' System.Windows.Media.Media3D.Viewport2DVisual3D'输入   ' System.Windows.Media.Visual&#39 ;.       在System.Windows.Documents.AdornerLayer.GetClipGeometry(Visual元素,Adorner adorner)       在System.Windows.Documents.AdornerLayer.UpdateElementAdorners(UIElement)   元件)       在System.Windows.Documents.AdornerLayer.UpdateAdorner(UIElement element)       在System.Windows.Documents.AdornerLayer.OnLayoutUpdated(Object sender,EventArgs args)       在System.Windows.ContextLayoutManager.fireLayoutUpdateEvent()       在System.Windows.ContextLayoutManager.UpdateLayout()       在System.Windows.ContextLayoutManager.UpdateLayoutCallback(Object arg)       在System.Windows.Media.MediaContext.InvokeOnRenderCallback.DoWork()       在System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks()       在System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object   resizedCompositionTarget)       在System.Windows.Media.MediaContext.RenderMessageHandler(Object resizedCompositionTarget)       在System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate   callback,Object args,Int32 numArgs)       在MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source,Delegate方法,Object args,Int32 numArgs,Delegate   catchHandler)

任何想法可能出现问题以及如何找到这个地方?在开发PC上,这个问题没有重现,而且生产不是全部而且不稳定。

感谢。

更新

Viewport2DVisual3D仅在xaml中用作控件,在c#后面代码中用于此类动画

  

Storyboard.SetTarget(page3DYShowAnimation,page.GetV2DV3D());   Storyboard.SetTargetProperty(page3DYShowAnimation,new   的PropertyPath("(Viewport2DVisual3D.Transform)(Transform3DGroup.Children)[1](RotateTransform3D.Rotation)&#34));

     

ScaleTransform trans = new ScaleTransform();   page.GetRot3D()。RenderTransformOrigin = new Point(0.5,0.5);   page.GetRot3D()。RenderTransform = trans; DoubleAnimation动画=新   DoubleAnimation(0.85,1,TimeSpan.FromMilliseconds(500));   trans.BeginAnimation(ScaleTransform.ScaleXProperty,anim);   trans.BeginAnimation(ScaleTransform.ScaleYProperty,anim);

     

var storyboard = new Storyboard(); var pTimeline = new   ParallelTimeline(); pTimeline.Children.Add(page3DYShowAnimation);   pTimeline.Children.Add(pageSlideHideAnimation);   storyboard.Children.Add(pTimeline); storyboard.Completed + =   storyboard_Completed;

     

storyboard.Begin(page.GetCont3D(),true);

在storyboard_中完成了另外一些动画。

0 个答案:

没有答案