微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.NET秒表类限制

这可能不是一个完全不是.NET相关的问题。 我正在编写一个.NET应用程序来控制一些小工具。 我定期向小工具发送命令(比如说每500毫秒)。 只要我发送命令,我启动一个计时器。 (.NET秒表类)

如果小工具在10毫秒内没有回应,我再次发送命令。 如果确实响应,我会继续通过发送更多命令并处理响应来监视小工具状态。

我有两个或三个秒表计时器并行运行,为这个小工具做其他事情。

现在,我想监视和控制数千个这样的小工具(可能高达5000)。 如果我为一个小工具创build一个对象,我将查看10000到15000个秒表对象并行运行。 我不确定秒表是如何工作的,但我认为他们依靠硬件计时器或某些类似的东西来logging时间。

.NET Thread.Sleep是否受到DST(或系统时间)更改的影响?

2应用程序最重要的问题

为什么Process.Start会意外返回false

.NET 4.0 – AccessViolationException和WndProc

计划Windows任务与C#编程

我的问题是,Windows可以同时处理如此大量的秒表吗?

什么时候应该调用MessageQueue.EndReceive()?

蓝牙服务器应用程序接受移动设备的连接

Windows 7的NLSsorting更改

SetFilePointerEx API来读取MFT

User32 API自定义PostMessage进行自动

我会建议重新考虑这个设计。 首先,秒表只是做它所说的 – 它就像一个秒表。 如果你想以特定的时间间隔触发一个事件,你会想看看不同的Timer类。

话虽如此,我会建议在整个小工具中分享你的计时器。 你会发现一切都表现得更好,如果你创建的单个调度程序使用更少的定时器,并且调度程序管理这些小配件,那么编写和理解可能会更简单。

秒表不过是一个保存Windows API调用QueryPerformanceCounter()的结果的变量,它在“运行”时没有开销。 停止再次调用QueryPerformanceCounter() ,所以性能应该没问题。 也就是说,我同意Reed copsey的观点,你需要重新思考你的设计。 有了这么多的小工具,我会开始考虑设备驱动程序。

我想这个问题应该是,如果你能处理一些很多的定时器, 你会浪费很多时间只是读数以千计的定时器,并没有功能

我没有意识到Stopwatch类的实现,但我可以想象,他们只是在开始和停止时读取计时器的值。 所以一个Stopwatch实例可能需要最没有资源。

但是试试吧 在循环中生成一些thousend实例的数组,启动它们,看看会发生什么。

考虑全局队列,它保存小工具的响应,以及一个或几个线程查询队列,并在需要的时候不满足消息。 它会表现更好。

使用一个时间源以指定的时间间隔安排事件

秒表类非常简单。 这不是一直“运行”的东西。 当你告诉它开始的时候,它会查看系统时间,当你告诉它暂停,停止,重置等等,每次你只是看着系统时间。 询问ElapsedMilliseconds相当于说(Processor.CurrentTicks – StartTicks)/ TicksPerMillisecond。 这很简单,真的。 系统可以处理大量的这些。

我不评论这是否是你的问题的正确设计,只是回答你的问题:系统可以处理数以千计的秒表没有问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐