【发布时间】:2015-08-21 21:34:38
【问题描述】:
我不熟悉在基于 ARM 的 32 位处理器上使用 C# 和 .NET 3.5 Compact Framework 进行 Windows CE 6.0 编程。我应该创建一个用户界面,显示来自大量多线程程序中不同线程的信息(想想对状态板或游戏循环的更新)。使用我在更典型的 Windows 桌面应用程序上完成的技巧,我在自己的线程上启动我的 Windows 窗体并更新 Paint 事件处理程序中的外观。
我有一个其他线程可以调用的 API(据我所知,它是线程安全的 - 锁定共享数据项等),然后更新数据结构的调用会触发 Invalidate () 在我的 Windows 窗体上。我的期望是,有时(希望很快)我的表单会被告知重新绘制,并使用提供的最新数据更新屏幕。
只是我的刷新率没有我预期的那么快。我什至设置了一个每秒触发 30 次 Invalidate() 的计时器,即使在简化的设置中,我也没有得到更频繁的更新。在一个更恶毒的设置中,我启动一个基本上在执行while (true) {} 的线程,然后我的 Paint 事件永远不会被调用(这并不奇怪,真的,但仍然......)。所以我不确定我是否不了解我的程序运行的环境(很有可能),或者我是否需要在 Windows CE 中考虑一些我目前不知道的其他事情。我花了很多时间在 Google 上,阅读了很多 SO 响应和各种博客等。我的显示刷新仍然比我需要的慢。
我意识到这有点模糊。我想了解的是,我是否需要了解有关 Windows CE 6.0 的一些技巧以及它的多线程和 Windows 窗体等的实现,看看是否有办法提高我的窗体的刷新率绘画(例如,最好确保每秒至少调用一次)。
【问题讨论】:
标签: c# .net multithreading compact-framework windows-ce