我有一个WPF应用程序,出于测试目的,该程序需要自动化。有一个使用Windows UIAutomation框架执行此操作的工具。
问题是当我尝试访问主应用程序上的元素并触发它们时,在主应用程序上分配了内存,并且无法在其上强制使用GC。除此之外,如果未找到页面上的元素,并且执行了多次重托盘,则有更多的内存要分配且不释放。我相信问题来自 AutomationElement 类的 Find 和 FindAll 方法。
这个问题似乎很老了,没有通用的解决方案[1] [2]。
自动化框架会进行一些缓存,以更好地访问UI元素。我想到的一种可能的解决方案是禁用UI元素的缓存或强制清除缓存。以前有没有人做过这件事,可以帮助我吗?
此外,您还有其他解决方案来解决Windows UI自动化框架引起的内存泄漏问题吗?
我在Win7和Win10机器上都进行了测试。