【发布时间】:2013-06-20 06:33:31
【问题描述】:
我有一个应用程序需要从不同的模块以每秒一次的周期执行大量操作。 这些动作彼此不相关。 有些动作不是那么重要,可以超过 1 秒。以几秒钟为周期,但对于其他 动作非常重要,它们将在 1 秒内执行。周期(最多延迟 400 毫秒)。
到目前为止,我的开发方法是给每个动作一个计时器,但现在我已经达到了 40 个计时器,我注意到 每个动作的延迟可能很长。
我的问题是,鉴于上述限制,我的应用程序的最佳方法是什么。 何时使用线程,何时使用计时器甚至任务? 也许我什至在错误的框架上,.Net 无法处理这种情况?!
感谢您的帮助, 哈达斯
P.S:也许值得一提的是,所有任务从一开始都是已知的,这意味着我的问题不是 动态添加任务,但决定应用程序的开发方法。
【问题讨论】:
-
关于这些重要动作——当你有50个这样的动作每1秒触发一次时,预期的行为是什么?您期望 50 个并行操作吗?如果其中一些的运行时间大于 1 秒怎么办?您是否希望在第一个实例尚未完成时启动同一任务的第二个实例?
-
听起来您正在构建一个实时系统。我认为,这意味着您为这项工作选择了错误的工具。 C#(至少是 Microsoft 的标准版本,带有通常的 GC)不适合构建实时系统。
-
@inquisitive,是的,有些动作我想开始,即使它们的最后一个周期没有结束。
标签: multithreading c#-4.0 timer periodic-processing