微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

与Multi-Touch Manipulations相关的未公开的.NET代码引发exception

一个有利的结果是防止这种例外,最好或者至less优雅地处理它。

我收到了Microsoft代码中引发的exception。 最重要的是,引发exception的方法是System.Windows.Input.Manipulations.ManipulationSequence.ProcessManipulators ,我在Microsoft Reference Source中找不到它。

当引发exception时,我可以看到在“调用堆栈”窗口中的一条线引用了Windows.Input.Manipulations.ManipulationProcessor2D.ProcessManipulators ,它存在于Microsoft Reference Source中。

但是,正如你所看到的,它没有名为ManipulationSequence的兄弟类。

如何删除文件关联

.NET:如何使用Windows“复制文件”对话框复制文件

屏幕保护程序仍然必须安装到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] 举报,一经查实,本站将立刻删除。

相关推荐