加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

vb.net – 使用Timers会对应用程序产生负面影响吗?

发布时间:2020-12-17 00:17:14 所属栏目:大数据 来源:网络整理
导读:我想知道 Timer 组件以及由于其使用或其使用的多个实例而产生的负面影响(如果有的话).在实践中,是否应该限制一个项目一次应该使用多少计时器? 好吧,一切都是相对的,但System.Windows.Forms.Timer是一个非常昂贵的对象.它的工作原理是创建一个隐藏窗口,使底
我想知道 Timer组件以及由于其使用或其使用的多个实例而产生的负面影响(如果有的话).在实践中,是否应该限制一个项目一次应该使用多少计时器?
好吧,一切都是相对的,但System.Windows.Forms.Timer是一个非常昂贵的对象.它的工作原理是创建一个隐藏窗口,使底层的winapi SetTimer()函数工作.此窗口不共享,每个计时器对象都有自己的窗口.窗口通常是更昂贵的操作系统对象之一.

因此,一个非常严格的上限是,您永远不会有超过10,000个启用的计时器. Windows拒绝允许应用程序创建那么多窗口.考虑到在一个桌面会话中运行的所有进程的所有窗口都需要共享一个公共堆,您应该远离该限制.或者换句话说,创建大量窗口但仍然低于10,000配额会对其他进程产生负面影响,它可能会在堆耗尽时使它们失败.

我会说一个合理的上限徘徊在100左右.假设所有这些计时器都有不同的Tick事件处理程序,那么通常会记录大量的移动部件.如果他们没有那么你应该以不同的方式解决这个问题,你只需要一个Timer来测量任意数量的间隔.大致相同的方式是用手腕上的单个手表预约.您可以通过在SortedList中存储到期时间来启动计时器,并仅为第一个到期时启动计时器.当它勾选时,处理列表中具有到期时间并重复的条目.添加或删除到期时间时,请停止计时器并在新的第一个到期时间后重新启动计时器.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读