这可能不完全不是.NET相关的问题.我正在编写一个.NET应用程序来控制一些小工具.我定期向小工具发送命令(比如每500毫秒).一旦我发送命令,我就会启动一个计时器.(.NET秒表类)
如果小工具在10毫秒内没有响应,我再次发送命令.如果确实响应,我会继续通过发送更多命令和处理响应来监控小工具状态.
我有2个或3个秒表计时器同时运行,为这个小工具做其他事情.
现在,我想监视和控制可能数以千计的这些小工具(可能高达5000).如果我为小工具创建一个对象,我将查看并行运行的10000到15000个秒表对象.我不确定秒表是如何工作的,但我认为他们依靠硬件计时器或某些东西来跟踪时间.
我的问题是,Windows可以同时处理如此大量的秒表吗?
我建议重新考虑这个设计.首先,秒表只是做它所说的 - 它就像一个秒表.如果您希望以特定间隔触发事件,则需要查看各种Timer类.
话虽这么说,我建议在小工具中分享你的计时器.您会发现一切都表现得更好,如果您创建的单个调度程序使用的计时器更少,并且调度程序管理小工具,则编写和理解可能更简单.
秒表只是一个保存Windows API调用结果的变量QueryPerformanceCounter()
,它在"运行"时没有开销.停止再次呼叫QueryPerformanceCounter()
,所以性能应该没问题.也就是说,我同意Reed Copsey,你需要重新考虑你的设计.有了这么多的小工具,我就开始考虑设备驱动程序了.