我想每分钟运行一个进程,但我被告知 Timer
每 x 分钟 + 进程完成所需的时间
工作一次。但我希望线程每 1
分钟工作一次,即使线程进程可能会持续工作 1 小时。
我希望你明白我的意思,所以在最终图像中,我可能有 10 个线程一起工作。
这可能吗?
最佳答案
取决于计时器。简单测试表明 System.Threading.Timer
以您想要的方式工作:
var timer = new Timer(s => { "Start".Dump(); Thread.Sleep(10000); "Hi!".Dump(); },
null, 1000, 1000);
Thread.Sleep(20000);
timer.Dump();
回调每秒执行一次,即使它需要十秒才能执行。
这基本上是因为这个特定计时器的回调只是发布到线程池,而例如System.Windows.Forms.Timer
实际上绑定(bind)到 UI 线程。当然,如果您只是在 winforms 计时器的回调中启动一个新线程(或队列工作,或启动一个新任务等),它会以类似(尽管不那么精确)的方式工作。
使用正确的工具完成工作通常会使事情变得容易得多:)
关于尽管有线程时间,c# 每分钟运行一个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26402736/