CF上的Winform有点沉重,初始化许多Windows句柄需要花费大量时间和内存。另一个问题是缺乏内置的双缓冲和缺乏对UI渲染的控制意味着在处理器密集型操作期间,UI可能会让用户盯着一半渲染的屏幕。尼斯!
为了缓解这个问题,我会寻求一个轻量级的控制框架,是否有一个已经开始或者必须自制?
轻量级是指一个控件库,它可以完全控制控件的绘制,而不会使用许多昂贵的窗口句柄。
注意:请不要建议我在UI线程上运行太多。那是不的情况。
答案 0 :(得分:2)
我前几天遇到过这个问题,至少作为一个起点可能会有所帮助:Fuild - Windows Mobile .NET Touch Controls。外观和感觉很好,但没有设计时间支持。我不太了解内存占用等等,但是所有内容都是双缓冲的,性能似乎相当不错。
答案 1 :(得分:1)
好的,只是一个想法在我的头顶......
如何创建同步对象,例如应用程序中的关键部分或单个锁定,在您的worker和gui线程之间共享。覆盖油漆。当你开始绘画时,阻止所有其他线程,这样当你占用CPU时,你不会留下半画的画面。
(这当然假设向用户呈现漂亮的图片是您需要的最重要的事情;))
答案 2 :(得分:0)
实际上,您可以覆盖绘制事件。
这个想法是你将长时间运行的操作卸载到一个单独的线程。这与任何其他事件驱动的框架没有什么不同,真的。依赖于处理Paint事件的 Anything 将会受到影响。
此外,没有系统可以让您确定何时引发绘制事件。这种事件通常由窗口管理器层引发,窗口管理器层位于应用程序之外(甚至是框架)。你可以自己处理这个事件,但有些时候不做任何工作,但我不推荐它。
答案 3 :(得分:0)
有点慢并且您无法控制绘制事件,因此在处理器密集型操作期间,UI可能会让用户盯着半个渲染的屏幕。
在UI线程上执行昂贵的任务通常是个坏主意。为了保持您的UI响应,这些任务应该由worker thread
执行