【发布时间】:2010-06-06 19:45:29
【问题描述】:
我正在尝试每隔t 时间调用一个方法f(),但如果之前对f() 的调用尚未完成,请等到它完成。
我已经阅读了一些关于可用计时器的信息,但找不到任何做我想做的事情的好方法,除了手动编写它。任何有关如何实现这一点的帮助将不胜感激,尽管我担心我可能无法找到使用计时器的简单解决方案。
澄清一下,如果t 是一秒,而f() 运行我在下面写的任意持续时间,那么:
Step Operation Time taken
1 wait 1s
2 f() 0.6s
3 wait 0.4s (because f already took 0.6 seconds)
4 f() 10s
5 wait 0s (we're late)
6 f() 0.3s
7 wait 0.7s (we can disregard the debt from step 4)
请注意,此计时器的性质是 f() 在重新进入时不需要安全,这里大小为 1 的线程池就足够了。
【问题讨论】:
-
链接已失效。
-
@astrowalker 谢谢!暂时将其删除,因为这里没有必要。
标签: c# multithreading timer