【发布时间】:2009-03-26 01:33:32
【问题描述】:
我正在编写一个 Windows 服务,它每隔一段时间运行一个可变长度的活动(数据库扫描和更新)。我需要经常运行此任务,但要处理的代码不能安全地同时运行多次。
我怎样才能最简单地设置一个计时器以每 30 秒运行一次任务,同时又不重叠执行? (我假设System.Threading.Timer 是这项工作的正确计时器,但可能是错误的)。
【问题讨论】:
-
我不知道你是否已经解决了这个问题,但是带锁的 Monitor.Tryenter 是要走的路。只有在获得锁的情况下才会执行间隔代码。只有当线程尚未执行您的代码时,您才会获得锁。
标签: c# multithreading timer overlap