【发布时间】:2021-12-30 09:45:34
【问题描述】:
我有一个 Windows 窗体应用程序,我正在尝试使用公司后端发送 SMS 和电子邮件消息。
假设我有 N 个类(SMS 发送者和电子邮件发送者是其中的一部分),并且所有这些类都具有调用所需后端服务的 Execute() 函数。我想要做的是,假设用户填写了所需的区域(邮件模板、接收者电子邮件等),用户将选择一个日期时间来执行给定的功能。
我知道我可以使用 Timer,但是这会消耗太多资源。
我知道我可以使用 Windows 调度程序,但我认为我必须将我的函数转换为 .exe 文件并使用 Windows 任务调度程序进行调度,但我不能简单地将我的项目转换为控制台应用程序
如何在给定的 DateTime 调用我的 Execute() 函数?
【问题讨论】:
-
只有当 winforms 应用程序 24*7 全天候保持打开状态时才有效。您的后端,假设它是一个 24*7 运行的后台进程,应该创建计时器。或者确实在运行 24*7 的服务器机器上使用 windows 调度程序或 windows 服务。
-
“我可以使用 Timer,但它会消耗太多资源。” -- 所以你想要一个比
System.Windows.Forms.Timer消耗更少资源的解决方案?多少资源太多了? -
@TheodorZoulias AFAIK 计时器一直在后台运行,我必须手动检查时间是否到了,我希望在运行我的功能的给定 DateTime 触发某种软件中断,不是手动控制
-
并且,给定截止日期和当前数据,您可以计算初始化计时器所需的确切时间跨度。但是,如果截止日期是几个小时或几天后,桌面应用程序需要一直保持打开状态!这不是问题吗?
标签: c# multithreading timer scheduled-tasks windows-task-scheduler