一个有利的结果是防止这种例外,最好或者至less优雅地处理它。
我收到了Microsoft代码中引发的exception。 最重要的是,引发exception的方法是System.Windows.Input.Manipulations.ManipulationSequence.ProcessManipulators ,我在Microsoft Reference Source中找不到它。
当引发exception时,我可以看到在“调用堆栈”窗口中的一条线引用了Windows.Input.Manipulations.ManipulationProcessor2D.ProcessManipulators ,它存在于Microsoft Reference Source中。
但是,正如你所看到的,它没有名为ManipulationSequence的兄弟类。
屏幕保护程序仍然必须安装到System32?
从窗口应用程序开始,用于检索安装在远程PC上的软件和硬件列表
最好的C#桌面应用程序的安全框架?
至于exception本身,它是一个System.Argument.OutOfRangeException值与Timestamp values must not decrease. Parameter name: timestamp Actual value was 6590630705479. Timestamp values must not decrease. Parameter name: timestamp Actual value was 6590630705479.
引发exception的方法的完全限定签名是System.Windows.Input.Manipulations.ManipulationSequence.ProcessManipulators(long timestamp,System.Collections.Generic.IEnumerable<System.Windows.Input.Manipulations.Manipulator2D> manipulators,System.Windows.Input.Manipulations.ManipulationSequence.ISettings settings)
看起来好像宇宙中的另外一个人有这个问题,但根据唯一的评论是不能复制的。
我在canvas上有6个MediaElement对象,它们在被操作时都运行着video,所以我觉得它可能与cpu被征税和放缓有关,可能使得时间戳被发送到不按顺序的方法(尽pipe使用Image而不是MediaElement时会出现同样的问题)。 偶尔会发生exception,有时只会在几秒钟后才会发生,有时会花费几分钟或更长的时间来处理这些对象。
我在ManipulationDelta中进行实际操作的代码如下所示:
//Get current values to manipulate TransformGroup group = (TransformGroup)element.RenderTransform.Clone(); TranslateTransform translate = (TranslateTransform)group.Children[0].Clone(); ScaleTransform scale = (ScaleTransform)group.Children[1].Clone(); RotateTransform rotate = (RotateTransform)group.Children[2].Clone(); //...does manipulations on each by changing values... //Apply transformation changes group.Children[0] = translate; group.Children[1] = scale; group.Children[2] = rotate; element.RenderTransform = group;
我有一个Storyboard在XAML搞乱RotateTransform ,所以我不能真正使用MatrixTransform 。
我使用.NET 4.5.1使用WPF来创build这个。 在Windows 8.1和Windows 7中都会出现错误。关于如何防止发生此exception的任何想法?
一些想法,我调查的问题:
我也有ManipulationInertiaStarting在这里作为这个错误的一个可能的原因。
我刚刚添加e.Handled = true; 到完成ManipulationCompleted结束,这是不存在的。 我没有得到这个错误(虽然也是非常零星的,所以很难判断它是什么时候修复的)。
如果一个ManipulationDelta方法还没有完成,并且从用户input中被再次命中,那么当第一个命中的方法遇到cpu资源而第二个方法命中时会发生某种竞争条件,那么当第一个方法最终完成时创build的时间戳是过去的?
根据评论,这不太可能。
我同意与同事进一步了解。 他帮助我意识到,我不能从处理操纵事件的方法中吞下exception,因为在实际创build操纵数据之前发生exception。 所以唯一可以处理exception的地方是App.Main()(我的代码存在的Call Stack中的第一个地方),这使得处理它更加困难。
如何以编程方式禁用系统设备?
使连续运行的ac#应用程序
安装3.5之后安全地卸载.NET Framework 2.0和1.0?
反转WPF图像的颜色
我自己有这个确切的问题。 经过大量测试后,可以在重负载下使用较慢的机器进行复制。
该应用程序是为数字标牌,并显示了很多不同的项目(视频,HTML,图像等),也有一些动画。
我不确定,但这似乎是及时处理输入事件的问题。
对于我自己,我可以“解决”这个问题,将代码从操作代码外包到异步的其他代码,还可以对性能方面的代码进行性能分析和重写(缩短了在事件内部尽可能运行的路径,并在以后做了所有的事情与任务)
另外,我在应用程序中添加了一个Exceptionhandler来“忽略并记录”这个问题,因为它没有其他的影响。
请随时与我联系,了解更多信息。
PS:这是我第一次在这里回答,所以我希望这样写就可以了
在开发WinRT时遇到了类似的问题。
有时可能使用dispatcherUnhandledException事件来忽略一个特定的异常。 要做到这一点,添加事件监听器,检查是否是你想要的异常(因为它是通常不好的主意,以抑制所有异常),然后设置处理属性。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。