尽管有线程时间,c# 每分钟运行一个线程

标签 c# .net multithreading

我想每分钟运行一个进程,但我被告知 Timerx 分钟 + 进程完成所需的时间 工作一次。但我希望线程每 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/

相关文章:

c# - 数据库之间的外键,复制表

c# - 多线程会减慢整体字典访问速度?

c# - 如何从外部 try/catch 传递值到 catch block (不使用全局变量)

python - TCP 扫描器 Python 多线程

java - 如何仅在另一个方法完成后才执行该方法?

c# - 为什么 Windows 只允许一个应用程序访问网络摄像头?

c# - 是否有用于 Firefox 或 Chrome 的 .Net 包装器来抓取网页?

用于定时操作的 C# 库

c# - 在生成的 IL 代码中,缺少一些行。 in between 行执行什么任务?

c# - .NET Core 中的 wsHttpBinding 解决方法