如何在 .Net 5.0 C# 或 F# 中编写以特定时间间隔定期运行的代码

Posted

技术标签:

【中文标题】如何在 .Net 5.0 C# 或 F# 中编写以特定时间间隔定期运行的代码【英文标题】:How to write Code that runs Periodically at certain intervals in .Net 5.0 C# or F# 【发布时间】:2021-12-30 00:54:15 【问题描述】:

我已经用 F#(一些用 C#)/.Net 5.0 编写了一些代码,目前我只是将它作为控制台应用程序运行并在 Visual Studio 中对其进行调试。

我想要它

自行运行 - 周一至周五早上 7 点到下午 6 点之间每小时运行一次 如果需要,可以暂停执行。

我应该采取什么方法?当我编写 nodejs 应用程序时,我曾经将命令行命令放入 windows 调度程序。

我应该

使用 windows 调度程序并作为命令行执行 编写一个 Windows 服务来完成它 还有别的吗?

我不确定要采取什么方法,我可能会错过一种完全适合这项任务的方法。

【问题讨论】:

有很多框架允许您定义作业并按计划运行它们。仅举几例:Quartz.net、Hangfire、FluentScheduler 等。 您将通过什么机制启动进程暂停? 我真的没想过(暂停)。如果它是 Windows 服务,我会暂停服务 - 否则我想我必须设置一个数据库标志,在使用上述库之一运行时检查该标志。 您可以使用内置后台服务而不是框架:docs.microsoft.com/en-us/dotnet/core/extensions/workers 【参考方案1】:

如果您使用 Windows 运行 exe,您可以使用内置的任务计划程序。关于暂停应用程序,您可以向应用程序添加一个观察者,该观察者将在应用程序运行之前检查状态。例如。查看数据库或集中配置文件。

【讨论】:

以上是关于如何在 .Net 5.0 C# 或 F# 中编写以特定时间间隔定期运行的代码的主要内容,如果未能解决你的问题,请参考以下文章

Unity 3D 5.0版本以上用C#语言如何编写退出游戏按钮的代码?

如何编写 C# 正则表达式模式以匹配基本的 printf 格式字符串,如“%5.2f”?

如何确定在 C# ASP.NET CORE MVC 5.0 中选择了哪个单选按钮

C# .NET 5.0 MVC JWT 中间件授权标头

如何授权 .NET 5.0 / C# 应用程序在没有用户交互的情况下与 Microsoft 365 SharePoint Online 交互?

如何将 Travis-CI 与 C# 或 F# 一起使用