【发布时间】:2011-09-12 05:11:18
【问题描述】:
我正在开发一个应用程序,我似乎花了很长时间才能获取我的数据(30-40 秒),所以我设置了一个低调分析器来检查并查看问题出在哪里是。
老实说,我仍然不知道问题出在哪里。我发现我可以快速(在 5-6 秒内)从我的服务中取回我的数据,将其全部美化以供显示,然后发送一条消息以通知我的 ViewModel 数据已准备好显示(使用 MVVM Light Messaging)。 .. 然后我的渲染线程会阻塞 10-40 秒。
这是我不明白的。我的 UI 线程做得很好......用我在页面上的自定义进度动画制作它的小心脏。而且我通过 Messenger 发送的对象非常小(只有几个布尔值,指示可以在哪里找到数据以及它的外观)。
但是渲染线程(响应屏幕触摸事件的线程)被完全阻塞了。当线程最终解除阻塞时,我一次触摸以移动我的枢轴控件和所有触摸数据寄存器。
我进行了 Windows Phone 性能分析,认为问题出在哪里会非常明显(我认为我会看到 CPU 达到 100% 并且我可以追踪导致我崩溃的函数)但它似乎没有注意到任何异常,通常的 UI 线程占据了节目,但没有任何异常。
我完全糊涂了。 Mango 中有什么我需要注意的东西会严重阻塞我的渲染线程吗?
【问题讨论】:
-
更新:看来问题是在运行我的 Deployment.Current.Dispatcher.BeginInvoke 时出现了某种不正常的延迟
-
更新:看起来问题是在运行我的 Deployment.Current.Dispatcher.BeginInvoke 时出现了某种不正常的延迟。 BeginInvoke 之前的行将在 BeginInvoke 最终运行前 20-30 秒运行。所以我想这将是 UI 线程的问题。除了动画一直流畅运行,我仍然无法从中获得触摸事件。我很困惑。
-
动画不受影响的原因是在 WP7 上,实际动画在许多情况下发生在与 UI 不同的线程上
标签: silverlight mvvm-light windows-phone-7 windows-phone-7.1