C# Windows UIAutomation有时会挂起其他应用程序
我在WPF客户端应用程序中通过COM接口使用UIAutomation。一些用户有时会挂起他们的特定应用程序(如nVidia控制面板)。我的应用程序收到该异常: System.Runtime.InteropServices.COMException(0x80131505):操作 超时。(来自HRESULT的异常:0x80131505) 在UIAutomationClient.IUIAutomationeElement.FindAll(树范围, IUIAutomation条件) 我无法在我的电脑上复制此内容C# Windows UIAutomation有时会挂起其他应用程序,c#,com,ui-automation,microsoft-ui-automation,C#,Com,Ui Automation,Microsoft Ui Automation,我在WPF客户端应用程序中通过COM接口使用UIAutomation。一些用户有时会挂起他们的特定应用程序(如nVidia控制面板)。我的应用程序收到该异常: System.Runtime.InteropServices.COMException(0x80131505):操作 超时。(来自HRESULT的异常:0x80131505) 在UIAutomationClient.IUIAutomationeElement.FindAll(树范围, IUIAutomation条件) 我无法在我的电脑上复
- 你有处理这类问题的经验吗李>
- 你有解决这种情况的办法吗李>
- 我可以减少COM超时吗?也许这会解决问题
- UIAutomation仅在具有创建者更新()的Windows 10上不稳定
- 这是bug,已经提交了
- NickAb找到了一个解决方案:使用
()TreeWalker
FindAll
和FindFirst
都容易出现这种异常,这是
尝试在WebView
中查找已加载其
最近,当方法尝试构建缓存时会引发异常,所以
这可能是由于尝试在可视化树运行时对其进行迭代
由另一个线程重建
将FindAll
替换为
private IEnumerable<WiniumElement> GetChildrens()
{
var elementNode = TreeWalker.ControlViewWalker.GetFirstChild(this.AutomationElement);
while (elementNode != null)
{
yield return new WiniumElement(elementNode);
elementNode = TreeWalker.ControlViewWalker.GetNextSibling(elementNode);
}
}
private IEnumerable GetChildrens()
{
var elementNode=TreeWalker.ControlViewWalker.GetFirstChild(this.AutomationElement);
while(elementNode!=null)
{
返回新的WiniumElement(elementNode);
elementNode=TreeWalker.ControlViewWalker.GetNextSibling(elementNode);
}
}
解决了这个问题。需要进一步调查。我们很可能会
必须将FindFirst
和FindAll
调用都替换为自定义
TreeWalker
迭代法
这将解决无法获取的页面源的问题
使用WebView
s的视图,但无法在WebView
s中找到元素
由于同样的错误