这可能不是一个完全不是.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。 这很简单,真的。 系统可以处理大量的这些。
我不评论这是否是你的问题的正确设计,只是回答你的问题:系统可以处理数以千计的秒表没有问题。
总结以上是内存溢出为你收集整理的.NET秒表类限制全部内容,希望文章能够帮你解决.NET秒表类限制所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)