Sup*_*deh 7 .net windows wpf performance windows-embedded
我有一个WPF应用程序,通常在具有管理员权限的本地用户帐户下运行.但是,在某些情况下,该过程由在SYSTEM
帐户下运行的服务或脚本启动,因此该过程也在该SYSTEM
帐户下运行.
问题是当进程在SYSTEM
帐户下运行时,存在一些明显的滞后(UI不是非常敏感).
我使用perfmon进行了一些挖掘并且没有看到任何可疑的信息(CPU没有过载,没有抛出异常异常,没有内存泄漏等等).我还检查了事件日志,但没有找到任何有用的信息(没有警告/错误,只有关于系统的无关信息).
我首先想到的是这个过程是在模拟的上下文中执行的,但即使没有假冒(我曾经PsExec.exe -i -s
在SYSTEM帐户下启动它),滞后仍然存在.
知道这会来自哪里?
不要犹豫,询问您是否需要更多信息,我主要是寻找一些有助于找到根本原因的想法(明显的解决方法是不在SYSTEM帐户下启动流程,但这不是真正的修复).
另请注意,应用程序在Windows Embedded Standard(XP SP3)的自定义版本和带电容式触摸屏的设备上运行.
我的问题不是"我怎么能解决这个问题?" 但是"为什么应用程序在SYSTEM帐户下以低性能运行.
我尝试更改Windows的性能优化设置,如@Sander建议,没有任何更改(http://support.microsoft.com/kb/308417).
我还使用这个应用程序进行了测试:http://www.kynosarges.org/WpfPerformance.html#Application
当在每个帐户下运行应用程序时,我在第一次GDI +测试的SYSTEM帐户下一直运行时间大约两倍(它基本上绘制了一堆三角形),这让我觉得这不是严格的WPF限制.同样,除了执行流程的帐户外,我没有更改任何内容.
我认为你应该完全绕过这个问题。不要提供系统服务 UI,而是将您的应用程序分为两部分 - 一个将执行实际操作的部分将作为服务运行(在任何有意义的帐户下),另一部分 - UI - 将作为普通用户运行过程。
使用WCF在两者之间进行通信相对容易。
它将解决您的性能问题以及您的解决方案暴露的许多潜在安全问题。