gpt4 book ai didi

c# - 定时器的性能成本

转载 作者:太空宇宙 更新时间:2023-11-03 22:10:30 27 4
gpt4 key购买 nike

我需要优化一个相当大的 WPF 应用程序。我们正在以非常高的频率从领域层获取数据更新。优化 UI 的一种想法是延迟某些 UI 元素的更新以提高 UI 性能。假设我们在域模型中有一个属性“Counter”,它每秒更改大约 100 次。所以我们可以创建一个每秒只触发一次的计时器,并在计时器触发时更新 ViewModel 中的相应属性。到目前为止效果很好。计时器每秒将域对象的值复制到 View 模型一次,我们就完成了。

问题是:每个 View 模型实例代表列表中的一个条目。这个列表可能有几千个条目。使用我描述的解决方案,我们还将创建数千个计时器。我猜想创建这么多计时器实例不是个好主意。一个简单的解决方案是在基类或其他地方创建一个静态计时器实例,然后只使用这个实例来更新所有 View 模型。但这也是不可能的。我们有任何不同的属性应该独立于领域模型进行更新,并且每个属性都应该有一个单独的更新率。

问题 1:有谁知道定时器有多贵?创建数千个计时器真的很重要吗?

问题 2:另一种解决方案是创建某种调度程序……一种“MultiTimer”,我可以在其中注册多个超时。有没有人对如何实现类似的东西有建议?

最佳答案

这可以使用 Microsoft's Reactive Extensions 以更优雅的方式实现- 简称 Rx。在其他很酷的功能中,Rx 包含一个 Throttle Method,它非常适合驯服激进的事件源。看看here .

关于c# - 定时器的性能成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6812850/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com