当前位置 : 主页 > 网络安全 > 测试自动化 >

.net – UI自动化导致的WPF性能问题

来源:互联网 收集:自由互联 发布时间:2021-06-19
我遇到了 this thread中描述的问题. dotTrace告诉我“手写笔输入”是有罪的. 我试过0700发布于Ron Z和Chaim Zonnenberg,但没有奏效. Rash建议2个变通办法: 只有在机器中运行任何自动化客户端(如
我遇到了 this thread中描述的问题.

dotTrace告诉我“手写笔输入”是有罪的.

我试过0700发布于Ron Z和Chaim Zonnenberg,但没有奏效.

Rash建议2个变通办法:

>只有在机器中运行任何自动化客户端(如屏幕阅读器,平板电脑中的tabtip等)时,才会触发自动化代码.因此,摆脱这种情况的一种方法是关闭任何自动化客户端应用程序.
>如果一个不可行,那么另一个选择是,UIElementHelper.InvalidateAutomationAncestors只有在应用程序的自动化树稀疏时才会花费更长的时间(如果使用自定义窗口自动化对等方禁用了楼宇自动化树,则会发生)并且可视化树密集.所以另一个解决方案是禁用任何自定义自动化代码,并允许WPF构建完整的自动化树.这应该加速UIElementHelper.InvalidateAutomationAncestors.

但如何关闭tabtip?我试图停止并禁用以下服务但没有工作,tabtip.exe仍然在后台运行:

>平板电脑输入服务
> TabletServicePen

Rash说这个问题应该在.NET 4.0 SP1中解决.有谁知道.NET 4.0 SP1的发布日期?

我正在使用Visual Studio 2010,Windows 7 64位,Wacom Graphire 4.

谢谢

更新:

要关闭tabtip.exe,我只需要在禁用上述服务后重新启动Windows.但仅凭这一点并没有解决我的问题.为了解决性能问题,我还必须禁用“Wacom Consumer Touch Service”.

根据this thread(2011年3月22日):

.NET Framework 4.0 sp1没有已发布的时间表

我最近不得不在我们的项目中使用WPF工具处理这个确切的问题.

发生崩溃的机器正在运行.NET Framework 4.5.

当工具崩溃时,我们可以看到.NET PresentationFramework UIAutomation中发生了崩溃.
崩溃异常是:PresentationFramework.dll中发生了’System.ArgumentOutOfRangeException’类型的第一次机会异常 – >此时,该漏洞似乎出现在.NET Framework中

但随后我们可以看到我们在UIAutomation调用中崩溃的堆栈,它引导我们进入这个线程,并认为该模块正在被Wacom服务触发.

在应用程序崩溃的机器上运行的Wacom驱动程序是:Wacom Tablet 6.3.1w3
降级到以前的版本后,一切都开始工作:WacomTablet_6.3.3-4

现在我们知道了问题的根源,我们开始寻找一种解决方法,以便仍能使用最新的驱动程序.
所以这就是它的好处是它似乎不会影响wacom数位板的功能:
– 转到“控制面板”.
– 双击“程序和功能”
– 单击左侧标题为打开或关闭Windows功能的链接
– 加载时,取消选中“Tablet PC可选组件”(在Windows 7中可称为“Tablet PC组件”).
– 单击“确定”按钮.
这可能需要您重新启动Windows计算机.

这对我们来说就是诀窍.

玩得开心!

网友评论